Extension Chrome: exécutez-le à chaque chargement de page


91

Je veux créer une extension chrome qui exécute certains scripts après le chargement d'une page, je ne sais pas si je dois implémenter cette logique sur la page d'arrière-plan ou cela peut être n'importe où ailleurs, toute aide ici sera grandement appréciée.


au cas où, il devrait exécuter le script après le chargement d'une page dans le navigateur.
albertosh

@ZloySmiertniy oui, recherchez simplement les scripts de contenu, assurez-vous également que dans l'option run_at vous mettez document_end et aussi dans les matches: vous devez spécifier dans quelle URL vos scripts seront injectés.
albertosh

Réponses:


92

À partir d'un script d'arrière - plan, vous pouvez écouter l' chrome.tabs.onUpdatedévénement et vérifier la propriété changeInfo.statussur le rappel. Il peut être en cours de chargement ou complet . S'il est terminé , effectuez l'action.

Exemple:

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

    // do your things

  }
})

Comme cela se déclenchera probablement à chaque achèvement d'onglet, vous pouvez également vérifier si l'onglet est activesur son attribut homonyme , comme ceci:

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
Vert

2
Quelle? Cette réponse date d'il y a 2 ans et demi. Tout a probablement changé maintenant.
fiatjaf

1
Pour faire une page URL spécifique:if (tab.url.startsWith("https://example.com") == false) return;
Nabi KAZ

47

S'il doit s'exécuter sur l' onloadévénement de la page, ce qui signifie que le document et tous ses actifs ont été chargés, cela doit être dans un script de contenu intégré dans chaque page dont vous souhaitez effectuer le suivi onload.


14
Il serait préférable de laisser le script de contenu être injecté à "document_end" voir "run_at" dans le manifeste content_script:run_at: "document_end"
Mohamed Mansour


11

Ce code devrait le faire:

manifest.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!')

est-il possible d'utiliser une expression rationnelle dans le champ "matches"?
Bootuz

Oui, voirhttps://developer.chrome.com/extensions/content_scripts#matchAndGlob
Dean Meehan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.