1

我有旧的 jQuery 用户脚本,在 Firefox 16 中运行良好,但在 Firefox 17 版本中停止运行。

所以,直到今天我尝试升级到 18 时,我一直在使用版本 16.0.2,但同样的问题仍然存在。首先,我认为可能是 Greasemonkey 并尝试了 1.6 版本和 Scriptish 插件,但没有成功。所以我尝试更新 jQuery 版本但没有解决方案。这不是一个脚本,它们都带有任何 jQuery 代码。控制台上也没有报告错误。

有人知道发生了什么吗?

firebug 控制台报告的一些错误:

o.attachEvent("on"+e, h);

从:

window.addListener=function(o, e, h){
try{
o.attachEvent("on"+e, h);
}catch(a){
o.addEventListener(e, h, false);
}
} 

另一个脚本上的另一个错误

GM_addStyle ( (<><![CDATA[

从:

GM_addStyle ( (<><![CDATA[
    #dtl {
        position:           absolute;
        top:                0;
        right:              0;      
    }
    #dtl iframe {
        width:              950;
        height:             680;
        border:             none;
    }

]]></>).toString () );
4

1 回答 1

2

jQuery 和 Greasemonkey 在 Firefox 17 和 18 中运行良好(只要您保持沙箱处于活动状态);那不是问题。

FF 17 改变的唯一主要事情是影响了很多 Greasemonkey 脚本,那就是Firefox 放弃了对 E4X 的支持。

使用 E4X,我们可以CDATA很好地制作健壮的多行字符串,如下所示:

GM_addStyle ( (<><![CDATA[
    #someNodeID {
        position:           fixed;
        top:                0;
        right:              0;
    }
]]></>).toString () );


但是,现在不再支持 E4X,我们必须CDATA将使用的每一段代码重构为使用 javascript 字符串转义 ( \),如下所示:

GM_addStyle ( '                         \
    #someNodeID {                       \
        position:           fixed;      \
        top:                0;          \
        right:              0;          \
    }                                   \
' );


使用该转义符时,您必须特别注意如何混合'"引用。

于 2013-01-10T22:20:37.213 回答