为什么我的 Firefox 附加组件在将 Firefox 更新到版本 50 后无法运行

Why does my Firefox add-on not work after updating Firefox to version 50

我开发了一个附加组件,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;

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

您最好将其重写为基于 WebExtension, if possible. Alternately, you can write it as an Add-on SDK 的扩展。如果您确实需要将其作为 Overlay 附加组件,则可以在主脚本功能和访问 DOM 之间提供分离。但是,这样做并不像其他类型的附加组件那样方便。

可以通过指定:

使当前代码兼容更长时间
<em:multiprocessCompatible>false/em:multiprocessCompatible>

在您的 install.rdf. Doing so should prevent Firefox from enabling multiprocess mode when your extension is installed, or, at least, use the compatibility shims 中,这可能足以让您的附加组件正常运行。

我建议您阅读: