1

在使用jetpack的 Firefox 扩展中,我有一个附加了contentScript的面板。该面板设置为最初显示一个 URL。如果面板更改其位置(通过单击链接或 a ),我无法再向 contentScript 发送消息(它会引发 ERR_DESTROYED,“页面已被破坏,无法再使用。”​​)。document.location=

当位置改变时,有没有办法让我的 contentScript 工作(或至少重新加载它)?或者我应该完全避免改变位置而只操纵原始面板内容?

这是显示行为的最小脚本:

exports.main = function (options, callbacks) {
  panel = require("panel").Panel({
    contentURL: "http://stackoverflow.com/",
    contentScript: 'self.port.on("foo", function() { console.log("foo received"); });'
  });

  widget = require("widget").Widget({
    id: "test-panel",
    label: "test panel",
    contentURL: "http://stackoverflow.com/favicon.ico",
    panel: panel
  });

  panel.on("show", function() {
    panel.port.emit("foo");
  });
};
4

1 回答 1

1

Myk MelezJetpack google 群组中得到了回答:

目前,您应该避免更改面板的位置,而只操作原始面板内容,因为没有办法保持内容脚本正常工作。但是我们可能应该让面板的内容脚本在其位置更改时重新加载。

或者,正如lcamacho 所说,我可以在面板内使用 iframe。

于 2011-05-14T13:54:26.100 回答