如何在其jetpack面板更改位置时保持contentScript正常工作

时间:2011-05-14 11:55:45

标签: javascript firefox firefox-addon firefox-addon-sdk

在使用jetpack的Firefox扩展程序中,我添加了panel contentScript。该面板设置为最初显示URL。如果面板更改其位置(通过单击链接或document.location=),我将无法再向内容脚本发出消息(它会引发ERR_DESTROYED,“页面已被破坏,无法再使用“)。

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

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

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");
  });
};

1 个答案:

答案 0 :(得分:1)

answer from Myk Melez上获得了Jetpack google group

  

目前,你应该避免改变   面板的位置,只能操纵   原来的面板内容,自此   没有办法保留内容   脚本工作。但我们应该   可能会成为小组的内容   脚本在其位置时重新加载   变化。

或者,作为lcamacho said,我可以在面板中使用iframe。