Si llamo console.log('something');
desde la página emergente, o cualquier script incluido, funciona bien.
Sin embargo, como la página de fondo no se ejecuta directamente desde la página emergente, no se incluye en la consola.
¿Hay alguna manera de que console.log()
aparezca en la página de fondo para aparecer en la consola para la página emergente?
¿hay alguna forma de, desde la página de fondo llamar a una función en la página emergente?
Respuestas:
Cualquier página de extensión (excepto los scripts de contenido ) tiene acceso directo a la página de fondo a través de
chrome.extension.getBackgroundPage()
.Eso significa que, dentro de la página emergente , puedes hacer lo siguiente:
Para que sea más fácil de usar:
Ahora, si desea hacer lo mismo dentro de los scripts de contenido , debe usar Pasar mensajes para lograrlo. La razón, ambos pertenecen a diferentes dominios, lo que tiene sentido. Hay muchos ejemplos en la página de Pases de mensajes para que los revises.
Espero que aclare todo.
fuente
alert()
chrome.extension.getBackgroundPage()
, lo consigonull
. ¿Necesito tener permisos establecidos o alguna otra configuración?Puede abrir la consola de la página de fondo si hace clic en el enlace "background.html" en la lista de extensiones.
Para acceder a la página de fondo que corresponde a sus extensiones, abra
Settings / Extensions
o abra una nueva pestaña e ingresechrome://extensions
. Verás algo como esta captura de pantalla.Debajo de su extensión, haga clic en el enlace
background page
. Esto abre una nueva ventana. Para la muestra de menú contextual de la ventana tiene el título:_generated_background_page.html
.fuente
Para responder su pregunta directamente, cuando llama
console.log("something")
desde el fondo, este mensaje se registra en la consola de la página de fondo. Para verlo, puede irchrome://extensions/
y hacer clic en esoinspect view
debajo de su extensión.Cuando hace clic en la ventana emergente, se carga en la página actual, por lo que console.log debería mostrar un mensaje de registro en la página actual.
fuente
Todavía puede usar console.log (), pero se registra en una consola separada. Para verlo, haga clic derecho en el icono de extensión y seleccione "Inspeccionar ventana emergente".
fuente
La solución más simple sería agregar el siguiente código en la parte superior del archivo. Y de lo contrario, puede utilizar todas las API completas de la consola Chrome como lo haría normalmente.
fuente
Abrir registro:
fuente
Intente esto, si desea iniciar sesión en la consola de la página activa:
fuente
En relación con la pregunta original, me gustaría agregar a la respuesta aceptada por Mohamed Mansour que también hay una manera de hacer que esto funcione al revés:
Puede acceder a otras páginas de extensión (es decir, página de opciones, página emergente) desde la página de fondo / script con la
chrome.extension.getViews()
llamada. Como se describe aquí .fuente
Es una publicación antigua, con buenas respuestas, pero agrego mis dos bits. No me gusta usar console.log, prefiero usar un registrador que inicie sesión en la consola, o donde quiera, así que tengo un módulo que define una función de registro un poco como esta
Cuando llamo log ("este es mi log") escribirá el mensaje tanto en la consola emergente como en la consola de fondo.
La ventaja es poder cambiar el comportamiento de los registros sin tener que cambiar el código (como deshabilitar los registros para la producción, etc.)
fuente
Para obtener un registro de consola de una página de fondo, debe escribir el siguiente fragmento de código en su página de fondo background.js:
Luego cargue la extensión e inspeccione su página de fondo para ver el registro de la consola.
¡¡Adelante!!
fuente