0

我开发了一个附加组件daneshLink,它已通过 Firefox 验证。用户安装并使用了这个插件。这个插件可以工作,但是当 Firefox 更新到 50.0 版时,这个插件就不能工作了。

(注意:更新 Firefox 后,附加组件没有被删除或禁用。它根本不起作用)。

var x = content.document.getElementsByTagName('html')[0].innerHTML;
var test = x.match(/>article Id:[0-9a-zA-z]/img);
var url = "> <a href=\"http://mysite.ir/index.jsp?articleID=";
for (var i = 0; i < test.length; i++) {
    x = x.replace(test[i], url +">Download :" + test[i] + "</a>");
}
 content.document.getElementsByTagName('html')[0].innerHTML = x;
4

1 回答 1

1

您提供的代码不足以知道问题所在,但我可以猜到。您很可能在迁移到多进程 Firefox 时遇到问题。事实上,这是一个 Overlay 附加组件,并且您的使用content.document使得您很可能没有将访问网页的 DOM(使用工作程序)与您的主脚本分开。

如果可能的话,最好将其重写为WebExtension来为您服务。或者,您可以将其编写为基于附加 SDK的扩展。如果你真的需要让它成为一个 Overlay 插件,可以在你的主要脚本功能和访问 DOM 之间提供分离。但是,这样做并不像其他类型的附加组件那样方便。

可以通过指定以下内容使当前代码兼容更长的时间:

<em:multiprocessCompatible>false/em:multiprocessCompatible>

在您的install.rdf中。这样做应该可以防止 Firefox 在安装扩展程序时启用多进程模式,或者至少使用可能足以让您的附加组件运行的兼容性垫片。

我建议你阅读:

于 2016-11-21T11:29:24.553 回答