usar - javascript console chrome
google chrome extension:: console.log() desde la página de fondo? (8)
Cualquier página de extensión (excepto las secuencias de comandos 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 , puede hacer:
chrome.extension.getBackgroundPage().console.log(''foo'');
Para que sea más fácil de usar:
var bkg = chrome.extension.getBackgroundPage();
bkg.console.log(''foo'');
Ahora, si desea hacer lo mismo dentro de las secuencias de comandos de contenido , debe usar Pasar mensajes para lograr eso. La razón, ambos pertenecen a diferentes dominios, que tienen sentido. Hay muchos ejemplos en la página de Paso de mensajes para que pueda verificar.
Espero que lo borre todo.
Si llamo a console.log(''something'');
desde la página emergente, o cualquier script incluido que funcione bien.
Sin embargo, como la página de fondo no se ejecuta directamente en la página emergente, no está incluida en la consola.
¿Hay alguna manera de que pueda obtener console.log()
en la página de fondo para que aparezca en la consola de la página emergente?
¿Hay alguna forma de, desde la página de fondo, llamar a una función en la página emergente?
En relación con la pregunta original, me gustaría añadir 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 / script de fondo con la llamada chrome.extension.getViews()
. Como se describe here .
// overwrite the console object with the right one.
var optionsPage = ( chrome.extension.getViews()
&& (chrome.extension.getViews().length > 1) )
? chrome.extension.getViews()[1] : null;
// safety precaution.
if (optionsPage) {
var console = optionsPage.console;
}
Es una publicación anterior, con buenas respuestas, pero agrego mis dos bits. No me gusta usar console.log, prefiero usar un registrador que se conecte a la consola, o donde quiera, así que tengo un módulo que define una función de registro un poco como esta.
function log(...args) {
console.log(...args);
chrome.extension.getBackgroundPage().console.log(...args);
}
Cuando llamo al registro ("este es mi registro") 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 registros para la producción, etc.)
La solución más simple sería agregar el siguiente código en la parte superior del archivo. Y que puedes usar todas las API completas de la consola de Chrome como lo harías normalmente.
console = chrome.extension.getBackgroundPage().console;
// for instance, console.assert(1!=1) will return assertion error
// console.log("msg") ==> prints msg
// etc
Lanzando una respuesta obvia aquí por las dudas. Usted sabe que puede abrir la consola de la página de fondo si hace clic en el enlace "background.html" en la lista de extensiones, ¿no?
Editar
Para acceder a la página de fondo que corresponde a sus extensiones, abra Settings / Extensions
o abra una nueva pestaña e ingrese chrome://extensions
. Verás algo como esta captura de pantalla.
Debajo de su extensión, haga clic en la background page
del enlace. Esto abre una nueva ventana. Para el ejemplo del menú contextual, la ventana tiene el título: _generated_background_page.html
.
Para responder a su pregunta directamente, cuando llame a console.log("something")
desde el fondo, este mensaje se registrará en la consola de la página de fondo. Para verlo, puede ir a chrome://extensions/
y hacer clic en esa inspect view
debajo de su extensión.
Cuando hace clic en la ventana emergente, se carga en la página actual, por lo tanto, console.log debe mostrar el mensaje de registro en la página actual.
Pruebe esto, si desea iniciar sesión en la consola de la página activa:
chrome.tabs.executeScript({
code: ''console.log("addd")''
});
Todavía puede usar console.log (), pero se registra en una consola separada. Para verlo, haga clic con el botón derecho en el ícono de la extensión y seleccione "Inspeccionar ventana emergente".