Estoy intentando que mi extensión de Chrome ejecute la función init()
cada vez que se carga una página nueva, pero tengo problemas para tratar de entender cómo hacerlo. Por lo que entiendo, tengo que hacer lo siguiente en background.html:Código de extensión de Chrome vs Guiones de contenido vs Guiones inyectados
- Uso
chrome.tabs.onUpdated.addListener()
para comprobar si la página es cambió - Uso
chrome.tabs.executeScript
para ejecutar un script.
Este es el código que tengo:
//background.html
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
chrome.tabs.executeScript(null, {code:"init();"});
});
//script.js
function init() {
alert("It works!");
}
También me pregunto si la función init() tendrá acceso a mis otras funciones ubicadas en otros archivos JS?
Gracias por la punta sobre 'cromo .tabs.onUpdated' disparando dos veces. Entonces mi pregunta es ¿cómo inyectaré 'init()'? ¿Debería inyectar todos mis JavaScripts? 'init()' se llama normalmente cuando el usuario hace clic en el ícono de Acción del navegador, y 'init()' desencadena muchas otras funciones. – Jon
@ user1277607 Cuando tiene que acceder a cualquiera de las variables globales de la página, inyecte el script. Cuando 'function init' tiene que acceder tanto a la página como al código de las extensiones, use una secuencia de comandos de contenido. Consulte la ** [respuesta vinculada] (http://stackoverflow.com/a/9517879/938089?building-a-chrome-extension-inject-code-in-a-page-using-a-content-script) * * para ver cómo inyectar los scripts, y ** [esta respuesta] (http://stackoverflow.com/a/9636008/938089?chrome-extension-retrieving-gmails-original-message) ** para obtener una guía sobre cómo implementar un Script de contenido que tiene que acceder a las variables de la página. –
muchas gracias. Funcionó muy bien :) – Jon