Tengo el siguiente código en mi guión fondo:Extensión de Chrome: ¿cómo detectar que el script de contenido ya está cargado en una pestaña?
chrome.tabs.onUpdated.addListener(function(tabId, changeinfo, tab) {
if (changeinfo.status !== 'complete')
return;
if (!matchesUrlFilters(tab.url))
return;
chrome.tabs.executeScript(tabId, { file: "jquery-1.7.1.min.js" }, function() {
chrome.tabs.executeScript(tabId, { file: "enhance.js" });
});
});
Sin embargo, esto parece inyectar mi guión contenido dos veces en algunos casos (que podría suceder cuando enhance.js
hace window.history.pushState
).
¿Cómo puedo saber si la pestaña ya tiene mi secuencia de comandos de contenido? Intenté chrome.tabs.sendRequest
pero nunca llamó a la devolución de llamada si todavía no se agregó la secuencia de comandos de contenido.
Cuando el guión se inyecta dos veces, ¿los dos guiones 'enhance.js' comparten un único entorno de ejecución con variables compartidas? – abraham
No lo sé (y ahora probablemente nunca lo comprobará debido a la respuesta que resuelve el problema por completo). –
Sé que esta es una vieja pregunta, pero me encontré con este problema también. En lugar de agregar un cheque para el script cargado, solo tuve que eliminar el script de la porción "content_scripts" de mi manifest.json ya que estoy delegando la ejecución del script y no quiero que se cargue siempre. – Andrew