在Chrome扩展程序中的页面加载事件

Jus*_*tMe 27 google-chrome-extension

我想在Chrome浏览器页面完全加载时检查Chrome浏览器页面内容中的一些值

if(document.body.innerText.indexOf("Cat") !=-1)
Run Code Online (Sandbox Code Playgroud)

我可以在何时何地进行检查?请给我一个明确的例子,我读了一些关于"Background.html"和"内容脚本"的内容,但我不能这样做

Rob*_*b W 55

在清单文件注册内容脚本"run_at": "document_idle"(这是默认设置),并将代码放在内容脚本文件中.然后在页面准备好后运行脚本.

如果要从后台页面检测页面是否已完全加载,请使用该chrome.webNavigation.onCompleted事件并执行任何操作,例如调用chrome.tabs.executeScript以执行内容脚本.如果URL列表是动态的,或者如果使用匹配模式语法无法描述URL模式,则此方法可能比以前的方法更有用.

chrome.webNavigation.onCompleted.addListener(function(details) {
    chrome.tabs.executeScript(details.tabId, {
        code: ' if (document.body.innerText.indexOf("Cat") !=-1) {' +
              '     alert("Cat not found!");' +
              ' }'
    });
}, {
    url: [{
        // Runs on example.com, example.net, but also example.foo.com
        hostContains: '.example.'
    }],
});
Run Code Online (Sandbox Code Playgroud)

webNavigation和主机权限已被设置manifest.json,例如:

{
  "name": "Test",
  "version": "1.0",
  "background": { "scripts": ["background.js"] },
  "permissions": [ "webNavigation", "*://*/*" ],
  "manifest_version": 2
}
Run Code Online (Sandbox Code Playgroud)

  • @ user1291538您可以将它放在扩展名中的单独文件中,并使用`file:'nameoffile.js'`而不是''code':'...'` - 另见[链接文档](http:/ /code.google.com/chrome/extensions/tabs.html#method-executeScript). (3认同)