javascript - corss - cors extension chrome
chrome.extension.getBackgroundPage() devuelve nulo después de un tiempo (2)
Cuando mi extensión de Chrome se carga en el inicio de Chrome, todo parece estar bien y chrome.extension.getBackgroundPage () devuelve el valor correcto (alunado desde popup.js). Pero después de un tiempo (2-3 minutos), especialmente si el navegador se deja solo, la función devuelve nulo. Solo cerrar y volver a abrir Chrome resuelve el problema. Traté de manipularlo por:
if (chrome.extension.getBackgroundPage() == null) window.location.reload(true);
Como se sugiere en Why hace que chrome.extension.getBackgroundPage () devuelva nulo? , lo que a veces ayuda, pero la mayoría de las veces solo actualiza la aplicación para que Chrome se cierre. ¿Alguien tiene una idea de lo que podría estar mal?
Cambie su fondo (página de evento) a una página de fondo real.
Modifique su archivo de manifiesto de
"background": {
"scripts": [
"background.js"
],
"persistent": false
}
a
"background": {
"scripts": [
"background.js"
],
"persistent": true
}
Las páginas de eventos son muy similares a las páginas de fondo, con una diferencia importante: las páginas de eventos se cargan solo cuando son necesarias. Cuando la página del evento no está haciendo algo activamente, se descarga, liberando la memoria y otros recursos del sistema.
Referencia
De acuerdo con la página referenciada ( Diferencia entre evento y página de fondo ), hay una mejor opción para obtener el fondo sin dejar de utilizar la Página de evento:
Si su extensión utiliza, extension.getBackgroundPage, cambie a runtime.getBackgroundPage en su lugar. El método más nuevo es asíncrono para que pueda iniciar la página del evento si es necesario antes de devolverlo.
Esto funcionó bien para mí, solo haz tu trabajo en la devolución de llamada asincrónica, que recibe la página de fondo como un parámetro de función.
Aquí está la especificación del método runtime.getBackgroundPage