Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从Firefox插件中的面板启动面板?_Javascript_Firefox Addon_Firefox Addon Sdk_Dom Events - Fatal编程技术网

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,甚至开始帮助你所需的努力量也要高得多,这大大减少了愿意/能够帮助你的人数。即使我们付出了额外的努力,我们也必须猜测你的问题的重要部分。