我有這樣的結構:如何從firefox插件中的面板中啓動面板?
Addon Directory
index.js
Data Directory
-panel1.html
-panel1.js
-panel2.html
-panel2.js
我在index.js
定義panel1
和panel2
。我將panel1
附加到工具欄按鈕上。 panel1.html
包含一個鏈接,該鏈接應該打開panel2.html
。
的問題是: 當我打電話panel2.show()
內panel1.js
,我得到這個錯誤:panel2.show is not a function
這是代碼:
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
腳本在我點擊面板1中的鏈接之前以及打開panel2.html
頁面之前就已經被執行。
請[編輯]你的問題是關於話題:包括[mcve]重複了這個問題。尋求調試幫助的問題(「爲什麼代碼不按我想要的方式工作?」)必須包括:(1)期望的行爲,(2)特定問題或錯誤,以及(3)重現它所需的最短代碼*在問題本身*。另請參閱:[我可以在這裏詢問什麼主題?](http://stackoverflow.com/help/on-topic)和[問]。 – Makyen
基本上,您需要將消息傳遞給主腳本以打開panel2。有很多方法可以這樣做。但是,您應該知道:可以有**只有一個** [sdk/panel](https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/panel)打開一段時間(即來自* all *附加SDK的插件,安裝在Firefox配置文件中,而不僅僅是附加組件)。因此,您*無法*同時打開panel1和panel2。請參閱:[如何在Firefox附加SDK中同時顯示2個sdk /面板?](https://stackoverflow.com/q/38279839) – Makyen
需要[mcve]的原因是*我們想要幫助*。如果我們不需要重新創建任何複製問題所需的代碼,它就更容易幫助。這是你已有的代碼。所以,請幫助我們來幫助您,並提供一個*完整的* [mcve]來重現問題。如果沒有[mcve],甚至開始幫助你的工作量要高得多,這顯着減少了願意/能夠幫助你的人數。即使我們付出了額外的努力,我們也必須在可能出現問題的重要部分猜測**。 – Makyen