自作のChrome ExtensionのBrowser Actionsにて,アイコンクリック時に任意の関数の呼び出し方で躓いたのでメモ.
やりたいこと
Browser Actionsのアイコンをクリックしたときに,content_scriptsで指定したscript.js
の関数hogehoge()を呼びたい.
マニフェストは以下の通り.
manifest.json
{
"manifest_version": 2,
"name": "Test app",
"description": "test",
"version": "1.0",
"icons": {
"image": "image.png"
},
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["script.js"]
}],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_icon": "image.png",
"default_title": "test"
},
"permissions": [
"tabs",
"background",
"http://*/*",
"https://*/*"
]
}
backgraound.js
backgraound.js
の記述.
以下のようにClick Listenerを定義する.
backgraound.js
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.sendMessage(tab.id, "myAction");
});
ポイントは,addListener
内で
chrome.tabs.sendMessage(tab.id, "myAction");
としてsendMessage
関数を呼び出す.引数の文字列は何でもOK.
次にscript.js
の記述.
script.js
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
if (request == "myAction") {
hogehoge();
}
});
function hogehoge() {
console.log("hogehoge");
}
chrome.extension.onMessage.addListener
を定義してやって,その中で目的の関数を呼び出せばアイコンクリックと同時に実行できる.
その際に,backgraound.js
内のchrome.tabs.sendMessage
の第二引数の文字列をトリガーとしている.