2012-01-31 9 views
1

私はfirefoxアドオンを開発しているnoobです。私は正常にパネルを(私が破るまで)私のウィジェットにアンカーすることができました。アンカーパネルは、一種のメニューとして機能します。私が立ち往生しているところは、アンカーパネルの「メニュー」項目の1つから別のパネルを呼び出すことができるようにすることです。これをどうやって行うのですか?メニューパネルとリストパネルの両方のスクリプトは、現在main.jsにあります。ここでjavascript anchor panel + widget、firefox add-on

は、メニューパネルのコードです:

var menuList = panels.Panel({ 
    width: 102, 
    height: 90, 
    contentURL: data.url('list/menu-list.html'),  
}); 

そして、ここでは、リストパネルのコードです:

:私のメニューpanel.htmlで

var historyList = panels.Panel({ 
    width: 600, 
    height: 300, 
    contentURL: data.url('list/history-list.html'), 
    contentScriptFile: [data.url('jquery-1.7.1.js'), 
        data.url('list/history-list.js')], 
    contentScriptWhen: 'ready', 
    onShow: function() { 
    this.postMessage(simpleStorage.storage.famhistory); 
    }, 
    onMessage: function(message) { 
     require('tabs').open(message); 
    } 
}); 

私はリンクを持っています

<a href="javascript:showpanel('famlist')">show family list</a> 

とこのスクリプトのヘッダ:

function showpanel(option) { 
this.historyList.show(); 
}; 

ご協力いただければ幸いです。 ありがとう!

答えて

1

パネルのJavaScriptコードには何もする権限がありません。新しいパネルを開くことができず、拡張機能と通信できません。あなたは、内線に戻って通信します。このパネルにコンテンツスクリプトを注入するために、このようなものが必要:

var menuList = panels.Panel({ 
    width: 102, 
    height: 90, 
    contentURL: data.url('list/menu-list.html'), 
    contentScriptFile: [data.url('jquery-1.7.1.js'), 
         data.url('list/menu-list.js')], 
    onMessage: function(message) { 
    if (message == "famlist") 
     historyList.show(); 
    } 
}); 

クリックをリンクし、必要に応じて延長にメッセージを送信するスクリプトmenu-list.jsを聞くために必要となるコンテンツを、

$(document).ready(function() { 
    $("#famlistLink").click(function() { 
    self.postMessage("famlist"); 
    }); 
}); 
+0

素晴らしいです。それは私がそれを理解するのに役立ちました。あなたのオリジナルのソリューション '$("#famlistLink ")。click(function()'はうまくいかなかったかもしれませんが、私はそのアイデアを使ってgetElementByIdと連動してonClick関数を作成しました。 。ありがとうございました! – spex2004

+0

私はコードをテストしませんでした - それはアプローチを例示するためだけにあります。 –

関連する問題