Chrome扩展程序:让它在每个页面加载时运行

alb*_*osh 73 javascript google-chrome google-chrome-extension

我想制作一个chrome扩展,在加载一个页面后执行一些脚本,我不确定是否必须在后台页面上实现这个逻辑,或者它可以在任何其他地方,这里的任何帮助将不胜感激.

fia*_*jaf 73

后台脚本中,您可以监听chrome.tabs.onUpdated事件并检查changeInfo.status回调中的属性.它可以加载完成.如果完成,请执行操作.

例:

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

    // do your things

  }
})
Run Code Online (Sandbox Code Playgroud)

因为这可能会在每个选项卡完成时触发,您还可以检查选项卡是否active在其同名属性上,如下所示:

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

    // do your things

  }
})
Run Code Online (Sandbox Code Playgroud)

  • `未捕获的TypeError:无法读取未定义的属性'onUpdated' (4认同)
  • 对于特定的 url 页面:`if (tab.url.startsWith("https://example.com") == false) return;` (3认同)
  • 什么?这个答案来自两年半前。现在一切都可能改变了。 (2认同)

Mat*_*chu 46

如果需要onload在页面事件上运行,意味着文档及其所有资产已加载,则需要在嵌入每个要跟踪的页面的内容脚本onload.

  • 最好让内容脚本注入"document_end",在content_script清单中看到"run_at":`run_at:"document_end"` (14认同)

Boh*_*dan 38

您可以将脚本放入内容脚本中,请参阅


Eva*_*oss 5

此代码应执行以下操作:

manifest.json

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

content.js

alert('Hello world!')
Run Code Online (Sandbox Code Playgroud)