web-dev-qa-db-fra.com

Google Chrome Extension - script d'arrière-plan

Après avoir bricolé avec Chrome Extension, j’ai remarqué que lorsque vous êtes sur la page chrome://extensions, un script d’arrière-plan lancé dans le fichier manifeste s’exécute là où, comme si vous surfiez sur Internet ou sur une autre page que la page d’extension, le script d’arrière-plan ne sera pas exécuté. .

Voici ce que je veux dire:

Dans mon dossier de manifeste:

"background": {
    "scripts": ["jquery-latest.js","background.js"]
  },

Maintenant dans le fichier background.js:

$(document).ready(function(){
    alert("working");
});

J'utilise une simple fonction d'alerte pour voir si cela fonctionnera et découvre que alert("working"); n'est affiché que lorsque je suis dans le répertoire chrome://extension. Si je vais sur google.com ou quelque chose du genre, pas de cigare.

Ma question est la suivante: pourquoi cela se produit-il? Comment puis-je le changer pour qu'il alerte quoi qu'il arrive.

18
David Biga

Le script background doit être considéré comme "fonctionnant à l'arrière-plan du navigateur Chrome".
Votre effet souhaité (exécuter un script pour chaque page) est en fait une tâche pour les scripts content .

Pour en savoir plus, lisez https://developer.chrome.com/extensions/overview.html#Arch .

26
Rob W

C'est parce que vous utilisez la page d'arrière-plan .. utilisez plutôt la page d'événement en modifiant légèrement le fichier manifest.json .. Essayez d'ajouter ceci:

"background": {
    "scripts": ["jquery-latest.js","background.js"],
    "persistent": false
  },

pour plus de détails sur les pages de l'événement, consultez ceci: https://developer.chrome.com/extensions/event_pages

3
Ninoop p george

L'effet est généré car chaque fois que vous chargez chrome://extensions, il force le rechargement des extensions, le même comportement peut être reproduit à l'aide de CTRL + R. Donc à chaque fois, la page d’arrière-plan a une nouvelle recharge, ce qui n’arrive pas avec d’autres pages. 

1
Rajan Verma

Le script d'arrière-plan est un script qui s'exécute en arrière-plan pour gérer la plupart des événements Chrome que les scripts de contenu ne peuvent pas. Les scripts de contenu sont purement le contenu de chaque page. Les deux ne peuvent pas se parler, cependant, vous pouvez donner aux scripts des auditeurs (par exemple, chrome.browserAction.addListener(myFunction) joue la fonction lorsque le bouton en haut à droite de votre écran pour l'extension est cliqué) afin de savoir si un bouton a été appuyé ou même envoyé. un message du script d'arrière-plan dans la console de la page. 

https://youtu.be/ew9ut7ixIlI Cette vidéo était une excellente introduction pour moi sur les scripts d'arrière-plan, cependant, la partie où il commence à parler des auditeurs et telle est 6:30.

0
Sean