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>/,'');

    然后再返回处理。

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

  • 相关阅读:
    Spring spEL
    Spring 使用外部部署文件
    Spring 自动装配
    spring 属性配置细节
    hdu 1054 Strategic Game
    fzu 2037 Maximum Value Problem
    将博客搬至CSDN
    HDU 4714 Tree2Cycle
    HDU 1009 The Shortest Path in Nya Graph
    POJ 1942 Paths on a Grid 组合数的优化
  • 原文地址:https://www.cnblogs.com/xesam/p/2144729.html
Copyright © 2011-2022 走看看