アプリ用のクロム拡張機能を作成しました。ナビゲーションバーに配置された「拡張アイコン」のCLICKイベントで「jsファイル」からMETHODを呼び出すところ。このために、app.js (アイコンのクリック時に呼び出される METHOD を含むファイル) と background.html (この html に含まれる js ファイルを使用) の間でメッセージの受け渡しを使用します。メッセージを渡すために使用されるスクリプトは次のとおりです:(background.html から)
chrome.browserAction.onClicked.addListener(function (tab) {
chrome.tabs.sendMessage(tab.id, "showPopup");
});
そしてメッセージを聞く:(app.jsで)
chrome.extension.onMessage.addListener(function(request) {
if (request === "showPopup") {
showPopup();
}
});
クリック イベントは期待どおりに機能します。しかし、今は mozilla 拡張機能で同じことをしたいと思っています。また、アイコンをクリックしたときに app.js にメッセージを渡すことができないため、含まれているメソッドを実行できます。
pageMod を使用して app.js も追加しました。
exports.main = function(options, callbacks) {
pageMod.PageMod({
include: ["*"],
contentScriptWhen: 'start',
contentScriptFile: [data.url('jquery-1.7.1.min.js'),data.url('app.js')]
});
createAndAddNavBarButton();
};
function createAndAddNavBarButton() {
var navBar = document.getElementById('nav-bar');//assume document has been defined
if (!navBar){return;};
var nbBtn = document.createElement('navbaricon');
nbBtn.setAttribute('id', 'navButton');
nbBtn.setAttribute('image', data.url('icon_16.png'));
nbBtn.onclick = function(){
showPopup();
return true;
}
navBar.appendChild(btn);
}
しかし、クリック イベントは何もせず、showPopup() は定義されていません。新しいページが app.js で関連付けられたイベントを読み込むと、エラーなしで実行されますが、クリック イベントは機能しません。
クロム拡張の場合に行ったように、クリックイベントをこのアイコンに直接割り当てることができる方法はありますか?