我使用的插件-SDK构建Firefox插件。
该插件在显示上点击面板一个键。 该面板具有运行其内容的脚本。 现在,我需要的面板看起来不同,这取决于用户的当前选项卡上,有时显示外部网址。
因此,main.js脚本跟踪用户的当前标签,并使用panel.port.emit()将消息发送到内容脚本和内容脚本更改面板,以匹配任何需要的HTML。
但是,正如我所说,有时面板只是显示外部URL,所以我需要重置回它原来的URL。 这是我的代码:
function panelListMode(currentTab, data){
panel.resize(350,300);
//This is the line causing the trouble
panel.contentURL = self.data.url("panel.html");
console.log("sending message");
panel.port.emit("generateList",data);
}
如果我改变的contentURL后发出的短信内容脚本似乎并没有收到东西。 我现在具体线路是一个,因为如果我评论它的内容脚本接收到该消息导致该问题。
东西告诉我,这是因为面板需要重新加载DOM和我需要等到它准备好内容脚本能够做任何事情之前。 但是......没有内容的脚本的东西除了只是包括脚本?
至于我能告诉面板上有,我可以听用于发射的消息各种各样的没有“准备好了”的事件。
我在想什么?
编辑:一些实验后,我已经能够找到更多一些。 如果我复制到panel.html相同的目录panel2.html和改变我的功能,所以有云:
function panelListMode(currentTab, data){
panel.resize(350,300);
//This is the line causing the trouble
panel.contentURL = self.data.url("panel2.html");
console.log("sending message");
panel.port.emit("generateList",data);
}
这个问题已经一去不复返了。 我已经尝试了一下,似乎当我尝试到的contentURL更改为已经在内容脚本停止工作结合在一起的面板中设置的HTML。
这是一些很奇怪的行为...有我遇到了一个错误?