Introduction
Cet article aborde le défi de l'envoi de messages à partir d'un script en arrière-plan à un script de contenu puis à un script injecté. Bien qu'il suive une approche typique, le processus d'envoi de messages se bloque au stade de l'arrière-plan vers le script de contenu.
La cause profonde réside dans le mécanisme d'injection des scripts de contenu. Contrairement aux attentes, Chrome n’injecte pas automatiquement de scripts de contenu dans les onglets existants lors du (re)chargement de l’extension. Par conséquent, lorsque le script d'arrière-plan tente d'envoyer un message à l'onglet actuel, aucun écouteur n'est disponible pour le recevoir.
Solution 1 : Injection conditionnelle avec ' assurerSendMessage'
Cette méthode consiste d'abord à envoyer une requête ping à l'onglet pour vérifier s'il est prêt à recevoir des messages. Dans le cas contraire, le script de contenu est injecté par programme, ce qui lui permet de recevoir et de répondre aux messages du script d'arrière-plan.
Solution 2 : Injection lors de l'initialisation
Une approche alternative consiste simplement à injecter les scripts de contenu sans discernement lors du chargement de l'extension. Ceci est sûr si le code du script peut gérer l'exécution plusieurs fois ou après le chargement complet de la page.
Solution 3 : Injection sélective via l'action du navigateur
Pour les cas où le message l'envoi doit avoir lieu sur des actions spécifiques de l'utilisateur, une action du navigateur peut être utilisée. En encapsulant le code d'envoi du message dans un écouteur onClicked, les injections et la communication n'ont lieu que lorsque l'utilisateur déclenche explicitement l'action du navigateur.
Enfin, il est important de résoudre un problème problème potentiel avec les scripts de contenu orphelins qui persistent après le rechargement de l'extension. Ces scripts peuvent interférer avec la bonne exécution des instances nouvellement injectées. Pour atténuer ce problème, le script de contenu peut implémenter un mécanisme de pulsation pour vérifier son statut actif avec le script d'arrière-plan. Ce n'est qu'après avoir reçu un accusé de réception positif en arrière-plan que le script de contenu doit exécuter des actions ou traiter des événements de page.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!