Javascript 如何从Firefox插件中的面板启动面板?
我有一个这样的结构:Javascript 如何从Firefox插件中的面板启动面板?,javascript,firefox-addon,firefox-addon-sdk,dom-events,Javascript,Firefox Addon,Firefox Addon Sdk,Dom Events,我有一个这样的结构: Addon Directory index.js Data Directory -panel1.html -panel1.js -panel2.html -panel2.js 我在index.js中定义了panel1和panel2。我将panel1附加到工具栏按钮panel1.html包含一个应该打开的链接panel2.html 问题是: 当我在panel1.js内部调用panel2.show()时,
Addon Directory
index.js
Data Directory
-panel1.html
-panel1.js
-panel2.html
-panel2.js
我在index.js
中定义了panel1
和panel2
。我将panel1
附加到工具栏按钮panel1.html
包含一个应该打开的链接panel2.html
问题是:
当我在panel1.js
内部调用panel2.show()
时,我得到以下错误:panel2.show不是一个函数
代码如下:
var geLink= document.getElementById("mylink");
getLink.addEventListener('click', function (event)
{
console.log("link clicked");
panel2.show();
},false);
如何从panel1启动panel2?这可能吗
我知道show方法不能从主插件脚本外部调用。那么,单击panel1
中的链接时,显示panel2.html
并执行其内容脚本的正确方法是什么?是否使用window.open()
?
如果是这种情况,我如何告诉
panel2
脚本在打开panel2.html
窗口之前不要执行?因为当我尝试它时,panel2
脚本在我单击panel1中的链接之前和panel2.html
页面打开之前执行。不可能从第一个面板启动第二个面板。不可能同时拥有两个面板
打开面板将关闭由面板()创建的任何面板
已打开的构造函数,即使该面板已由
不同的基于SDK的扩展插件
但是,您可以启动包含内容脚本的普通HTML页面,而不是面板。在索引中创建pageMod对象:
var pageMod = require('sdk/page-mod').PageMod({
include: "resource://extensionfile/data/page.html",
contentScriptFile:'./myscript.js',
contentScriptWhen: 'ready',
onAttach: function(worker) {
worker.port.emit("going-from-index", myarray);
worker.port.on("coming-from-panel", receivedvalue); }
});//end var pageMod
在面板中,听链接单击,然后打开html页面:
link = document.getElementById("click-link");
link.addEventListener('click',function (event)
{
window.open('page.html');
}
);
请将你的问题放在主题上:包括一个重复问题的问题。寻求调试帮助的问题(“为什么这段代码没有按我想要的方式工作?”)必须包括:(1)所需的行为,(2)特定的问题或错误,(3)在问题本身中重现它所需的最短代码。请参阅:,和。基本上,您需要向主脚本传递一条消息以打开panel2。有很多方法可以做到这一点。但是,您应该知道:一次只能打开一个插件(来自该Firefox配置文件中安装的所有基于SDK的插件,而不仅仅是您的插件)。因此,不能同时打开panel1和panel2。请看:之所以需要a,是因为我们想提供帮助。如果我们不必重新创建复制问题所需的任何代码,那么帮助就容易多了。这是您已经拥有的代码。因此,请帮助我们帮助您,并提供一个完整的复制问题。如果没有a,甚至开始帮助你所需的努力量也要高得多,这大大减少了愿意/能够帮助你的人数。即使我们付出了额外的努力,我们也必须猜测你的问题的重要部分。