2011-11-01 20 views
7

Tengo un archivo manifest.json que tiene este aspecto:¿Por qué chrome.extension.getBackgroundPage() devuelve nulo?

{ 
    "name": "Zend Debugger Extension", 
    "version": "0.1", 
    "background_page": "background.html", 
    "permissions": [ 
    "cookies", "tabs", "http://*/*", "https://*/*" 
    ], 
    "browser_action": { 
    "default_title": "Launch Zend Debugger", 
    "default_icon": "icon.png", 
    "popup": "popup.html" 
    } 
} 

Aquí es mi background.html:

<html> 
    <script> 
    function testRequest() { 
     console.log("test Request received"); 
    } 
    </script> 
</html> 

Y mi popup.html:

<script> 
function debug(target) { 
    if (target.id == 'thisPage') { 
     console.log('sending request'); 
     chrome.extension.getBackgroundPage().testRequest(); 
    } 
} 
</script> 

<div onclick="debug(this)" id="thisPage">Current Page</div> 

Sin embargo, el background.html página parece no ser accesible. Estoy recibiendo este error:

Uncaught TypeError: Cannot call method 'testRequest' of null 

Cuando examino chrome.extension.getBackgroundPage() puedo obtener un valor nulo. Estoy pensando que cometí un error en mi archivo manifiesto, pero no veo lo que hice mal.

Gracias.

Respuesta

1

Le falta el permiso de fondo, echar un vistazo a mi archivo manifest.json de mi extensión de Chrome:

{ 
    "content_scripts": [ 
    { 
     "matches": ["http://*/*"], 
     "js": ["jquery.js", "asserts.js"] 
    } 
    ], 
    "name": "Test Extension", 
    "version": "1.0", 
    "description": "A test extension to inject js to a webpage.", 
    "background_page": "background.html", 
    "options_page": "options.html", 
    "browser_action": { 
    "default_icon": "icon.png", 
    "popup": "popup.html" 
    }, 
    "permissions": [ 
    "tabs", 
    "http://*/*", "https://*/*", "<all_url>", "background" 
    ] 
} 

EDIT: ¿Estás seguro de que tiene el archivo background.html en la misma carpeta que todos los archivos de su extensión chrome ?, y si es así, intente volver a cargar su extensión desde la página de administración de extensiones, recuerdo que una vez tuve un error que mi extensión no recargó, así que fui a las herramientas del desarrollador para la página de fondo y ejecuté window.location.reload(true); desde la consola, eso lo solucionó. Por favor, responda si esto funcionó, voy a seguir investigando

+0

He intentado añadir el permiso de fondo, pero aún así obtener nula cuando se trata chrome.extension.getBackground () y el mismo error cuando se ejecuta el script. De hecho, pensé que el permiso de fondo estaba relacionado con si la extensión todavía se ejecuta en segundo plano cuando todas las pestañas están cerradas: http://code.google.com/chrome/extensions/manifest.html#permissions – AntBrown

+0

¿Estás seguro de que tienes el fondo? html en la misma carpeta que todos los archivos de la extensión chrome ?, y si es así, intenta volver a cargar tu extensión desde la página de administración de extensiones, recuerdo que una vez tuve un error que mi extensión no recargó, así que fui a las herramientas del desarrollador para mi página de fondo y ejecutado window.location.reload (true); desde la consola, eso lo solucionó. Por favor responda si esto funcionó, seguiré investigando. – ElHacker

+0

Recargar la extensión solucionó el problema getBackgroundPage() = null. Gracias. – AntBrown

2

Aquí es otra respuesta con más opciones:

chrome.extension.getBackgroundPage() returns null after awhile

According to the referenced page (Difference between Event and Background Page) there is a better option to get the background while still using Event Page :

If your extension uses, extension.getBackgroundPage, switch to runtime.getBackgroundPage instead. The newer method is asynchronous so that it can start the event page if necessary before returning it.

+0

Si bien es cierto, esta es una pregunta muy, muy antigua que tiene que ver con manifestar la versión 1, antes de que las páginas del evento fueran una cosa. – Xan

+0

¡Los tiempos pueden haber cambiado, pero me han ayudado a seguir el camino correcto! –

Cuestiones relacionadas