はい、メッセージパッシングで可能です。以下のスクリプトを参考にしてください。
デモンストレーション
次のコードは、コンテンツスクリプトからトリガーされると、バックグラウンドページで関数を実行します。
マニフェスト.json
拡張子を付けて背景とコンテンツのスクリプトを登録し、必要な権限を追加しました
{
"name": "Run Background page function from content script",
"description": "",
"version": "1",
"manifest_version": 2,
"background": {
"scripts": [
"background.js"
]
},
"content_scripts": [
{
"matches": [
"https://www.google.co.in/*"
],
"js": [
"myscript.js"
]
}
],
"permissions": [
"https://www.google.co.in/*"
]
}
background.js
いくつかの簡単な関数と、関数の呼び出しをトリガーするためのリスナーが含まれています
//Some Trivial Function
function runme() {
console.log("I am executed ... ");
}
//Listener fired when message is recieved
chrome.extension.onMessage.addListener(function (content) {
if (content.message == "Hey i am from Google.co.in Page please run runme function") { // Check for correct message
runme(); // Invoke function
}
});
myscript.js
//Trigger background page through message passing
chrome.extension.sendMessage({
message: "Hey i am from Google.co.in Page please run runme function" //Some message
});
出力
トリガーが呼び出されたときに実行されているバックグラウンド関数を確認できます。
参照