Событие загрузки страницы в расширениях Chrome

Я хочу проверить некоторые значения в содержимом страницы браузера Chrome, когда она полностью загружена

if(document.body.innerText.indexOf("Cat") !=-1)

Где и когда я могу сделать чек? пожалуйста, дайте мне ясный пример. Я прочитал кое-что о "Background.html" и "Content script", но я не могу этого сделать.

Ответ 1

Зарегистрируйте скрипт содержимого в файле манифеста в "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.'
    }],
});

Разрешения webNavigation и хоста должны быть установлены в manifest.json, например:

{
  "name": "Test",
  "version": "1.0",
  "background": { "scripts": ["background.js"] },
  "permissions": [ "webNavigation", "*://*/*" ],
  "manifest_version": 2
}