不自重者,取辱。不自长者,取祸。不自满者,受益。不自足者,博闻。
疏忽jQuery对内容进行escapeHTML给FeHelper带来的Bug 进入全屏
line

如题:疏忽jQuery.html()对内容进行escapeHTML处理给FeHelper造成的BUG!

一直知道jQuery的html()方法会对内容进行escapeHTML处理,但在FeHelper的JSON自动格式化功能里却一直疏忽了这点(要感谢用户反馈,才想起来),直接导致“<”都显示成了“<”等等。之前获取页面JSON文本的代码是这样的:

/**
 * 从页面提取JSON文本
 * @return {*}
 * @private
 */
var _getJsonText = function(){
    var source = $.trim($('body>pre:eq(0)').html());
    if (!source) {
        source = $.trim($('body').html())
    }
    if (!source) {
        return;
    }
    // 下面就直接拿source进行格式化处理了...
}

要解决这个escapeHTML的问题,还得把html()得到的内容反解回去:

/**
 * 将escape过的HTML再反解回来
 * @param txt
 * @return {String|XML}
 * @private
 */
var _unEscapeHTML = function(txt) {
    return txt.replace(/&amp;/g,'&').replace(/&gt;/g,'>')
        .replace(/&lt;/g,'<').replace(/&quot;/g,'"')
        .replace(/&#39;/g,"'");
};

于是在_getJsonText的方法中,将source进行_unEscapeHTML处理一下即可!

此BUG已在FeHelper4.4版本中修复,再次感谢网友的积极反馈!

趣店(原趣分期)技术学院
重点关注技术架构、服务化、优秀工具、自动化平台、开发全流程一体化解决方案、新人培养、工程师进阶之道等方面
这里环境优雅、氛围年轻、主要是福利还多,还等什么?我们敞开技术的大门,欢迎各种工程师加入!

评论区域

line
  • Alien 2014-06-13 19:37:50 回复
    回复 源泉 : 对的,用的之前写的一个本地存储组件
    源泉 said:
    本来没打算评论的,点了下输入框,然后上次评论的昵称信息什么的都自动弹出来了?这难道是用了localstorge?
  • 源泉 2014-06-13 17:27:33 回复
    本来没打算评论的,点了下输入框,然后上次评论的昵称信息什么的都自动弹出来了?这难道是用了localstorge?