【问题标题】:Greasemonkey scripts worked in Firefox 16.0.2 but not in version 17.0.1 or later? [closed]Greasemonkey 脚本在 Firefox 16.0.2 中有效,但在 17.0.1 或更高版本中无效? [关闭]
【发布时间】:2013-01-10 21:18:18
【问题描述】:

我有旧的 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 () );

【问题讨论】:

  • 您准备进行一些调试 :) 缩小范围一定不是什么大问题(不是所有的 jquery 脚本,而是所有的 jquery 脚本)并查看自 jquery 1.8 以来已弃用的内容已经升级了,有很多变化
  • 你的意思是,如果我降级我的 jQuery 我的“旧代码”可以工作吗?如果“是”,那么为什么firefox版本会影响脚本的功能?
  • 不,我不知道,自从 ff 升级以来,我所有的 jquery 代码都很好……所以也许它是油脂猴你在网页中测试了相同的脚本(不是通过油脂猴)……缩小!
  • 我已经用 Firefox 17.0.1 测试了greasemonkey 1.4、1.5 和1.6 也是脚本,我现在正在使用它。 Firefox 15、16 都可以正常工作。 Firefox 17 和 18 没有。每个 jquery 代码都会失败。

标签: firefox greasemonkey cdata e4x scriptish


【解决方案1】:

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

随着 FF 17 的改变,影响了很多 Greasemonkey 脚本的唯一主要变化是 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;          \
    }                                   \
' );


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

【讨论】:

  • 谢谢布洛克。这将是多么浪费时间和耐心,检查和更改每个脚本。对我来说很高兴,我相信更改 GM_addStyle 会解决所有问题。带有 o.attachEvent("on"+e, h); 的那个错误,也解决了修复 GM_addStyle。
  • 如果你有一个好的编辑器并且知道宏,这并不难。我在几个小时内更改了 51 个脚本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-23
  • 1970-01-01
  • 2012-11-25
  • 1970-01-01
  • 2023-01-25
  • 2010-09-13
  • 1970-01-01
相关资源
最近更新 更多