質問が言うように、私はchrome拡張子のバックグラウンドスクリプトとコンテンツスクリプトの違いを知りたいだけです。両方のスクリプトにchromeオブジェクトを記録すると、異なるオブジェクトが見つかりました。
アイコンがクリックされたときにJavaScriptをページに挿入したいので、manifest.json
にコンテンツスクリプトを追加しましたが、コンテンツスクリプト内のアイコンクリックイベントを聞くことができません。
chrome.browserActionは、コンテンツスクリプトのchromeオブジェクトで定義されていません。
コンテンツスクリプトでクリックイベントを聞くにはどうすればよいですか。背景スクリプトとコンテンツスクリプトの両方を含めることはできますか?
これは私のmanifest.jsonです
{
"name": "First Plugin Testing",
"version": "1.0",
"manifest_version": 2,
"description": "Trying hands on first extension",
"background": { "scripts": ["background.js"] },
"browser_action": {
"default_icon": "icon.png"
},
"permissions": [
"tabs", "http://*/*", "https://*/*"
],
"content_scripts": [
{
"matches": ["http://*/*"],
"js": ["temp.js"]
}
]
}
私は尋ねられた質問に対する答えを見つけました。
A.コンテンツスクリプトとバックグラウンドスクリプトの両方を含めることはできますか?
はい、マニフェストにバックグラウンドスクリプトとコンテンツスクリプトの両方を含めることができます。それらの間の相互作用を行うには、 ChromeメッセージパッシングAPI を使用できます。
私も同じようにやっていたのですが、バックグラウンドスクリプトにエラーがあり、見えなかったので、グーグルで検索してこの質問を投稿しました。
B.コンテンツスクリプトでクリックイベントを聞くにはどうすればよいですか?
解決策:コンテンツスクリプトにbrowser click event
を含めることはできません。 chromeオブジェクトへの部分的なアクセスしかありません。したがって、バックグラウンドスクリプトでクリックハンドラーを受信し、コンテンツスクリプトにメッセージを送信して、必要な操作を行う必要があります。
バックグラウンドスクリプトでchrome.browserAction.onClicked
イベントを使用してから、 メッセージパッシング を使用して、ユーザーがアイコンをクリックしたコンテンツスクリプトに情報を送信します。