Greasemonkey脚本在Firefox 16.0.2中有效,但在17.0.1或更高版本中没有?

时间:2013-01-10 21:18:19

标签: firefox greasemonkey cdata e4x scriptish

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

所以,我使用版本16.0.2直到今天我尝试升级到18并且同样的问题仍然存在。首先,我认为可能是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 () );

1 个答案:

答案 0 :(得分:2)

jQuery和Greasemonkey在Firefox 17和18(as long as you keep the sandbox active)中运行良好; 这不是问题。

影响很多Greasemonkey脚本的FF 17改变的唯一主要因素是Firefox dropped support for 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;          \
    }                                   \
' );


使用该转义时,您必须特别注意混合'"引号的方式。