25

質問にあるように、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"]
    }
  ]
}
4

1 に答える 1

17

私は尋ねられた質問に対する答えを見つけました。

A.コンテンツスクリプトとバックグラウンドスクリプトの両方を含めることはできますか?

はい、マニフェストにバックグラウンドスクリプトとコンテンツスクリプトの両方を含めることができます。それらの間の相互作用を行うには、ChromeメッセージパッシングAPIを使用できます。

私も同じようにやっていたのですが、バックグラウンドスクリプトにエラーがあり、見えなかったので、グーグルで検索してからこの質問を投稿しました。

B.コンテンツスクリプトでクリックイベントを聞くにはどうすればよいですか?

解決策:browser click eventコンテンツスクリプトに含めることはできません。Chromeオブジェクトへのアクセスは部分的にしか行われないため、バックグラウンドスクリプトでクリックハンドラーを受信し、コンテンツスクリプトにメッセージを送信して、必要な操作を行う必要があります。

chrome.browserAction.onClickedバックグラウンドスクリプトでイベントを使用してから、メッセージパッシングを使用して、ユーザーがアイコンをクリックしたコンテンツスクリプトに情報を送信します。

于 2012-10-18T05:30:11.787 に答える