zoukankan      html  css  js  c++  java
  • 火狐升级到5、6的坑爹bug【有关火狐应用中心】

    最近几个同事升级了ff到5和6,于是有人向我报告了一个bug,说是一个上传图片的功能失效了,关键是有的升级有问题,有的升级之后又没有问题。

    于是我检查下,发现这个问题太坑爹了,居然是由一个插件引起的,就是更新之后出现的那个由火狐魔镜升级的火狐应用中心。

    具体原因:

    上传图片使用的是jquery的一个插件:ajaxfileupload.js,里面有段代码是这样的:

    if (io.contentWindow) {                    
    xml.responseText
    = io.contentWindow.document.body ? io.contentWindow.document.body.innerHTML : null;
    xml.responseXML
    = io.contentWindow.document.XMLDocument ? io.contentWindow.document.XMLDocument : io.contentWindow.document;
    }

    .......

    data
    = type =="xml"|| data ? r.responseXML :r.responseText;

    ......

    return data;

    问题来了,按照原来的意思,返回的data是一个对象,然后eval出来,可是如果装了火狐应用中心之后,返回的data是"{}<div></div>"的形式,就是在xml.responseText里面包含了一段HTML代码,而这段HTML代码就是

    火狐应用中心默认提供的,于是后面的解析华丽丽的失败了。

    DIV里面的形式是:

    <div style="position: absolute; display: none; z-index: 9999;" id="livemargins_control">
    <img src="chrome://livemargins/skin/monitor-background-horizontal.png" style="position: absolute;left:-77px;top:-5px" height="5" width="77">
    <img src="chrome://livemargins/skin/monitor-background-vertical.png" style="position: absolute;left:0;top:-5px;">
    <img id="monitor-play-button" src="chrome://livemargins/skin/monitor-play-button.png" onmouseover="this.style.opacity=1" onmouseout="this.style.opacity=0.5" style="position: absolute;left:1px;top:0;opacity:0.5;cursor:pointer">
    </div>

    当它还是火狐魔镜的时候,没有问题的,可是一升级,问题就来了,重点是,这个还是默认提供的。

    所以需要检查data的内容,把这段HTML代码剔除掉

    data = data.replace(/<div.*<\/div>/,'');

    然后再返回处理。

    具体晚上再分析,我先去解决问题。

  • 相关阅读:
    java_list<String> string[]拼接json
    java_method_删除事务回滚
    java_jdk_JDK版本切换批处理脚本
    java_js_检查是否全为数字
    java_method_stringUtils
    java_method_下拉框成json
    java_method_下载导入模版
    java_js_json_日期格式化
    java_js从字符串中截取数字
    gulp+tp5配置
  • 原文地址:https://www.cnblogs.com/xesam/p/2144729.html
Copyright © 2011-2022 走看看