为什么在将Firefox更新到版本50后,我的Firefox插件无法正常工作

时间:2016-11-21 08:42:32

标签: javascript firefox firefox-addon firefox-addon-overlay

我开发了一个加载项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;

1 个答案:

答案 0 :(得分:1)

您提供的代码不足以知道问题是什么,但我可以猜测。您很可能遇到迁移到多进程Firefox的问题。事实上,这是一个Overlay附加组件,并且您使用<em:multiprocessCompatible>false/em:multiprocessCompatible> 使得您可能无法从主脚本中分离访问网页的DOM(使用工作者)。

如果可能的话,最好将此作为WebExtension重写。或者,您可以将其编写为基于Add-on SDK的扩展名。如果您确实需要将它作为Overlay附加组件,则可以在主脚本功能和访问DOM之间进行分离。但是,这样做并不像其他类型的附加组件那样方便。

Header set Content-Security-Policy "
    default-src 'self';
    script-src 'self' www.google-apis.com *.cloudflare.com someotherDomain.com;
    img-src 'self' *.cloudflare.com;
"

install.rdf中。这样做可以防止Firefox在安装扩展程序时启用多进程模式,或者至少使用可能足以使加载项正常运行的compatibility shims

我建议你阅读: