Chrome拡張機能:ページが読み込まれるたびに実行されるようにする


91

1つのページが読み込まれた後にいくつかのスクリプトを実行するChrome拡張機能を作成したいのですが、このロジックをバックグラウンドページに実装する必要があるのか​​、それとも他の場所に実装できるのかわかりません。ここでのヘルプをいただければ幸いです。


念のため、ブラウザにページが読み込まれた後にスクリプトを実行する必要があります。
アルベルトッシュ2011年

@ZloySmiertniyはい、コンテンツスクリプトを探してください。また、run_atオプションにdocument_endを配置し、一致することも確認してください。スクリプトを挿入するURLを指定する必要があります。
アルベルトッシュ2017年

回答:


92

バックグラウンドスクリプトあなたが聞くことができるchrome.tabs.onUpdatedイベントとプロパティをチェックしchangeInfo.status、コールバックに。それは可能ロードまたは完全な。それがある場合は、完全な、アクションを実行します。

例:

chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
  if (changeInfo.status == 'complete') {

    // do your things

  }
})

これはおそらく、すべてのタブの完了時にトリガされますので、タブがあれば、あなたもチェックすることができactive、その上で同名の属性のように、:

chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
  if (changeInfo.status == 'complete' && tab.active) {

    // do your things

  }
})

8
Uncaught TypeError: Cannot read property 'onUpdated' of undefined

2
何?この答えは2年半前のものです。おそらく今はすべてが変わったでしょう。
fiatjaf 2015年

1
特定のURLページを作成する場合:if (tab.url.startsWith("https://example.com") == false) return;
NabiKAZ19年

47

onloadページのイベントで実行する必要がある場合、つまりドキュメントとそのすべてのアセットが読み込まれている場合は、追跡する各ページに埋め込まれているコンテンツスクリプトに含める必要がありますonload


14
コンテンツスクリプトを「document_end」に挿入することをお勧めします。content_scriptマニフェスト内の「run_at」を参照してください。– run_at: "document_end"
Mohamed Mansour


10

このコードはそれを行う必要があります:

マニフェスト.json

   {
      "name": "Alert 'hello world!' on page opening",
      "version": "1.0",
      "manifest_version": 2,
      "content_scripts": [
        {
          "matches": [
            "<all_urls>"
          ],
          "js": ["content.js"]
        }
      ]
    }

content.js

alert('Hello world!')

「一致」フィールドで正規表現を使用することは可能ですか?
Bootuz

はい、参照してくださいhttps://developer.chrome.com/extensions/content_scripts#matchAndGlob
ディーンミーハン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.