2011-11-01 23 views
7

Ho un file dimanifest.json che assomiglia a questo:Perché chrome.extension.getBackgroundPage() restituisce null?

{ 
    "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" 
    } 
} 

Ecco la mia background.html:

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

E il mio 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> 

Tuttavia, il background.html La pagina non sembra essere accessibile. Sto ottenendo questo errore:

Uncaught TypeError: Cannot call method 'testRequest' of null 

Quando ho ispezionare chrome.extension.getBackgroundPage() ottengo un valore nullo. Sto pensando di aver commesso un errore nel mio file manifest, ma non riesco a vedere cosa ho fatto di sbagliato.

Grazie.

risposta

1

Ti manca il permesso di fondo, dare un'occhiata al mio file manifest.json della mia estensione 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: Sei sicuro di avere il file background.html sulla stessa cartella tutti i tuoi file di estensione chrome ?, e se è così, prova a ricaricare la tua estensione dalla pagina di gestione delle estensioni, ricordo che una volta ho avuto un bug che la mia estensione non ha ricaricato, quindi sono andato agli strumenti dello sviluppatore per la mia pagina di sfondo ed eseguito window.location.reload(true); dalla console, che lo ha risolto. Si prega di rispondere se questo ha funzionato, io continuo a ricercare

+0

Ho provato ad aggiungere il permesso di sfondo ma ancora ottenere nulla quando si cerca chrome.extension.getBackground () e lo stesso errore quando viene eseguito lo script. In realtà pensavo che l'autorizzazione in background fosse relativa al fatto che l'estensione continuasse a essere eseguita in background quando tutte le schede sono chiuse: http://code.google.com/chrome/extensions/manifest.html#permissions – AntBrown

+0

Sei sicuro di avere lo sfondo. file html nella stessa cartella di tutti i file dell'estensione di chrome ?, e se è così, prova a ricaricare la tua estensione dalla pagina di gestione delle estensioni, ricordo che una volta ho avuto un bug che la mia estensione non ha ricaricato, quindi sono andato agli strumenti dello sviluppatore per la mia pagina di sfondo ed eseguito window.location.reload (true); dalla console, che lo ha risolto. Per favore, rispondi se questo ha funzionato, continuerò a fare ricerche. – ElHacker

+0

Il ricaricamento dell'estensione ha risolto il problema getBackgroundPage() = null. Grazie. – AntBrown

2

Ecco un'altra risposta con più opzioni:

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

Mentre vero, questa è una domanda molto, molto vecchia che ha a che fare con manifest versione 1, prima che le pagine di eventi fossero una cosa. – Xan

+0

I tempi potrebbero essere cambiati, ma mi hanno aiutato ad andare sulla buona strada! –

Problemi correlati