-1

私はこのような構造を持っている:私はindex.jspanel1panel2を定義しfirefoxアドオンでパネルからパネルを焼くには?

Addon Directory 
    index.js 
    Data Directory 
     -panel1.html 
     -panel1.js 
     -panel2.html 
     -panel2.js 

を。私はpanel1をツールバーボタンに添付しました。 panel1.htmlには、panel2.htmlを開くリンクが含まれています。

問題がある: 私はpanel1.jspanel2.show()を呼び出すときに、私はこのエラーを取得:panel2.show is not a function これはコードです:

var geLink= document.getElementById("mylink"); 
getLink.addEventListener('click', function (event) 
      { 
       console.log("link clicked"); 
       panel2.show(); 
       },false); 

パネル1からpanel2発射する方法は?これは可能ですか?

私はshowメソッドをメインアドオンスクリプトの外から呼び出せないことを理解します。だから、panel1のリンクをクリックするとpanel2.htmlとそのコンテンツスクリプトを表示する正しい方法は何ですか? window.open()を使用していますか? この場合、panel2.htmlウィンドウを開くまでpanel2スクリプトが実行されないようにするにはどうすればよいですか?私が試したときに、panel2スクリプトが実行されてからpanel1のリンクをクリックしてからpanel2.htmlページが開く前に実行されるからです。

+0

[編集]あなたの質問がためにしてください上のトピック:含まパネルで

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ページを開きます問題を再現する[mcve]。 (1)望ましい動作、(2)特定の問題またはエラー、および(3)それを再現するために必要な最短のコードを含める必要があります。質問自体に*。また、[ここで私はどのような話題を聞くことができますか?](http://stackoverflow.com/help/on-topic)、[ask]を参照してください。 – Makyen

+0

基本的には、メインスクリプトにメッセージを渡してpanel2を開く必要があります。そうする方法はたくさんあります。ただし、** [sdk/panel](https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/panel)は**でしか開かないことがあります。 (あなたのアドオンだけでなく、そのFirefoxプロファイルに*すべての*アドオンSDKベースのアドオンがインストールされているからです)。つまり、panel1とpanel2の両方を同時に開くことはできません。参照:[FirefoxアドオンSDKで同時に2つのsdk /パネルを表示する方法](https://stackoverflow.com/q/38279839) – Makyen

+1

[mcve]が必要なのは、 *を助ける。問題を再現するために必要なコードを再作成する必要がない場合は、**大いに**役立ちます。これはあなたがすでに持っているコードです。だから、あなたを助け、問題を再現する完全な* [mcve]を提供するのを助けてください。 [mcve]がなければ、あなたを手伝ってくれる労力も**多く**高くなります。あなたを喜んで助けることができる人の数を大幅に減らします。余計な努力をしても、あなたの問題の重要な部分に**推測**する必要があります。 – Makyen

答えて

0

最初のパネルから2番目のパネルを起動することはできません。同時に2つのパネルを持つことはできません。

Opening a panel will close any panel created by the Panel() constructor that is already open, even if that panel was opened by a different Add-on SDK based extension.

しかし、パネルではなく、コンテンツスクリプトを含む通常のHTMLページを起動できます。インデックスにpageModオブジェクトを作成します。

link = document.getElementById("click-link"); 
link.addEventListener('click',function (event) 
            { 
             window.open('page.html'); 
            } 
          ); 
関連する問題