Si j'appelle à console.log('something');
partir de la page contextuelle, ou de tout script inclus, cela fonctionne bien.
Cependant, comme la page d'arrière-plan n'est pas directement exécutée depuis la page contextuelle, elle n'est pas incluse dans la console.
Y a-t-il un moyen que je puisse obtenir console.log()
dans la page d'arrière-plan pour apparaître dans la console pour la page contextuelle?
existe-t-il un moyen, à partir de la page d'arrière-plan, d'appeler une fonction dans la page contextuelle?
Réponses:
Toute page d'extension (à l'exception des scripts de contenu ) a un accès direct à la page d'arrière-plan via
chrome.extension.getBackgroundPage()
.Cela signifie que dans la page contextuelle , vous pouvez simplement faire:
Pour faciliter son utilisation:
Maintenant, si vous voulez faire la même chose dans les scripts de contenu, vous devez utiliser Message Passing pour y parvenir. La raison, ils appartiennent tous les deux à des domaines différents, ce qui a du sens. Il existe de nombreux exemples dans la page de transmission de messages que vous pouvez consulter.
J'espère que tout efface.
la source
alert()
chrome.extension.getBackgroundPage()
, je reçoisnull
. Dois-je avoir des autorisations définies ou une autre configuration?Vous pouvez ouvrir la console de la page d'arrière-plan en cliquant sur le lien "background.html" dans la liste des extensions.
Pour accéder à la page d'arrière-plan qui correspond à vos extensions, ouvrez
Settings / Extensions
ou ouvrez un nouvel onglet et entrezchrome://extensions
. Vous verrez quelque chose comme cette capture d'écran.Sous votre extension, cliquez sur le lien
background page
. Ceci ouvre une nouvelle fenêtre. Pour l' échantillon de menu contextuel de la fenêtre a le titre:_generated_background_page.html
.la source
Pour répondre directement à votre question, lorsque vous appelez
console.log("something")
depuis l'arrière-plan, ce message est consigné dans la console de la page d'arrière-plan. Pour le voir, vous pouvez allerchrome://extensions/
et cliquez sur cetteinspect view
sous votre extension.Lorsque vous cliquez sur la fenêtre contextuelle, elle est chargée dans la page actuelle, donc console.log doit afficher le message du journal dans la page actuelle.
la source
Vous pouvez toujours utiliser console.log (), mais il est connecté à une console distincte. Pour le visualiser, faites un clic droit sur l'icône de l'extension et sélectionnez "Inspecter le popup".
la source
La solution la plus simple serait d'ajouter le code suivant en haut du fichier. Et vous pouvez utiliser toutes les API complètes de la console Chrome comme vous le feriez normalement.
la source
Ouvrir le journal:
la source
Essayez ceci, si vous souhaitez vous connecter à la console de la page active:
la source
En ce qui concerne la question initiale, je voudrais ajouter à la réponse acceptée par Mohamed Mansour qu'il existe également un moyen de faire fonctionner cela dans l'autre sens:
Vous pouvez accéder à d'autres pages d'extension (c.-à-d. Page d'options, page contextuelle) à partir de la page d'arrière-plan / script avec l'
chrome.extension.getViews()
appel. Comme décrit ici .la source
C'est un ancien post, avec déjà de bonnes réponses, mais j'ajoute mes deux morceaux. Je n'aime pas utiliser console.log, je préfère utiliser un enregistreur qui se connecte à la console, ou partout où je veux, j'ai donc un module définissant une fonction de journal un peu comme celle-ci
Quand j'appelle le journal ("ceci est mon journal"), il écrira le message à la fois dans la console contextuelle et dans la console d'arrière-plan.
L'avantage est de pouvoir modifier le comportement des logs sans avoir à changer le code (comme la désactivation des logs pour la production, etc ...)
la source
Pour obtenir un journal de console à partir d'une page d'arrière-plan, vous devez écrire l'extrait de code suivant dans votre page d'arrière-plan background.js -
Chargez ensuite l'extension et inspectez sa page d'arrière-plan pour voir le journal de la console.
Aller de l'avant!!
la source