На странице загрузки события в расширениях Chrome - PullRequest
27 голосов
/ 25 марта 2012

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

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

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

1 Ответ

54 голосов
/ 25 марта 2012

Зарегистрируйте скрипт содержимого в файле манифеста в "run_at": "document_idle" (по умолчанию) и вставьте свой код в файл скрипта контента.Затем скрипт будет запущен, когда страница будет готова.

Если вы хотите определить с фоновой страницы, полностью ли загружена страница, используйте событие chrome.webNavigation.onCompleted и делайте все, что хотитехочу, например, вызвать chrome.tabs.executeScript, чтобы выполнить скрипт содержимого.Этот метод может быть полезен по сравнению с предыдущим методом, если список URL-адресов является динамическим или если шаблоны URL-адресов нельзя описать с использованием синтаксиса pattern pattern .

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...