2011-05-14 48 views
1

在使用jetpack的Firefox扩展中,我有一个panel,并附有contentScript。该面板设置为最初显示一个URL。如果面板改变其位置(通过点击链接或document.location=),我不能再向contentScript发送消息(它会引发一个ERR_DESTROYED,“该页面已被销毁,不能再使用。”​​)。如何在jetpack面板更改位置时保持contentScript正常工作

当位置变化时,有没有办法让我的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"); 
    }); 
}; 

回答

1

上了Jetpack google groupanswer from Myk Melez

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

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

相关问题