google chrome - quot - Función de hook/API de post-instalación de extensión de Chrome: ¿existe?
developer chrome apps (1)
Puedes hacer esto usando una página de fondo . Cuando se instala la extensión, la página de fondo se abre en segundo plano y, por lo tanto, se ejecuta. Para asegurarse de que no se ejecute todo el tiempo, simplemente almacene un valor en localStorage
.
¿Hay una función de hook / API de instalación posterior a la extensión de Chrome que me permita realizar una acción después de instalar o actualizar el complemento?
Me gustaría realizar una acción después de instalar mi extensión, y solo justo después de que esté instalada. Esta acción solo se debe realizar una vez (después de la instalación o después de la actualización) de la extensión.
Actualizar
Algunas personas han propuesto establecer la versión de la extensión en localStorage, el problema que tengo es que la secuencia de comandos de contenido que tiene acceso a localStorage no se carga en la página cuando se instala el complemento por primera vez.
AFAIK después de instalar un complemento, y utiliza un script de contenido insertado en la pestaña / página, la página debe volver a cargarse.
No sé cómo acceder a localStorage desde la página de fondo; Solo se puede acceder a localStorage desde un script de contenido.
Para obtener el número de versión de la página de fondo para el script de contenido requiere el uso de la función API de Chrome para ejecutar scripts:
chrome.tabs.executeScript(null, {code:function_to_execute}, function() { // callback });
Sin embargo, cuando instala un complemento y la página en la que este complemento debe insertar un script de contenido, ya está cargada, no inyecta el script de contenido, debe volver a cargar la página.
actualización 2
Mirando algunos de los consejos proporcionados en más detalle, con el fin de guardar el número de versión, es posible acceder a la Almacenamiento local de la página de fondo. Sin embargo, por lo que tengo que hacer, que es volver a cargar una pestaña específica en una URL específica (para asegurarme de que la secuencia de comandos de contenido es la más nueva) después de instalar o actualizar un complemento, terminó siendo innecesario molestar con localStorage.
En aras de permanecer en el tema, el consejo dado sobre escribir el número de versión en localStorage (en la página de fondo) y luego compararlo con el número de versión en el archivo de manifiesto es suficiente para permitir que alguien ejecute un script la primera vez instalado / o actualizado
Cómo
Haga que el archivo de manifiesto esté disponible para la página de fondo (nota: esto se toma de otro lugar, no me atribuyo el mérito, pero no recuerdo la fuente, si lo sabe, hágamelo saber y lo agregaré).
// MAKE MANIFEST FILE AVAILABLE
chrome.manifest = (function() {
var manifestObject = false;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
manifestObject = JSON.parse(xhr.responseText);
}
};
xhr.open("GET", chrome.extension.getURL(''/manifest.json''), false);
try {
xhr.send();
} catch(e) {
console.log(''Couldn/'t load manifest.json'');
}
return manifestObject;
})();
Ahora puede acceder a su número de versión de esta manera: chrome.manifest.version
Para escribir en localStorage solo pásalo así: localStorage[''my_plugin_version''] = chrome.manifest.version