【问题标题】:Why does my Firefox add-on not work after updating Firefox to version 50为什么我的 Firefox 插件在将 Firefox 更新到版本 50 后无法工作
【发布时间】:2016-11-21 08:42:31
【问题描述】:

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

【问题讨论】:

  • edit您的问题成为主题:寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括:►期望的行为, ►特定问题或错误在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable ExampleWhat topics can I ask about here?How do I ask a good question?
  • 如果没有代码,我们无法猜测为什么这个插件不起作用。仅提供指向您的附加组件的指针是不够的。提供代码。它必须是在问题本身中
  • 另外一次,当您编写插件时,最好使用正在发布的 Firefox 版本进行测试。这包括Firefox BetaFirefox Developer EditionFirefox Nightly。您的附加组件于 2016 年 10 月 23 日发布。每晚都是版本。当时是51或52。进行此类测试将减少您的插件需要更新的次数,和/或您的插件停止为您的用户工作的次数。
  • Browser Console(在 OSX 上为 Ctrl-Shift-J 或 Cmd-Shift-J)中显示了关于您的附加组件的内容,确切地说您在安装 Firefox 的情况下启动了它(鉴于它不是一个无需重启的附加组件,因此无法从 Firefox 启动中看到启动信息)?
  • 谢谢。只有我的网站用户可以使用这个插件,当他们点击插件时,他们可以下载 PDF 和文章。@Makyen

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


【解决方案1】:

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

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

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

<em:multiprocessCompatible>false/em:multiprocessCompatible>

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

我建议你阅读:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多