Lo script di contenuto invia un messaggio a background.js. Nel gestore di callback per la risposta, ho avuto l'ultima riga come "alert(alrt_msg)"
. Al momento l'esecuzione di codice, ho la finestra di avviso, ma dopo aver fatto clic su "OK", il display della console cromata seguente in rosso:Errore lancio di estensione di Chrome nella console
Error in event handler for 'undefined': Cannot call method 'disconnect' of null TypeError: Cannot call method 'disconnect' of null
at chromeHidden.Port.sendMessageImpl (miscellaneous_bindings:285:14)
at chrome.Event.dispatch (event_bindings:237:41)
at Object.chromeHidden.Port.dispatchOnMessage (miscellaneous_bindings:250:22)
La sua non è molto informativo, ma intuitivamente sapevo che questo errore è dovuto al fatto qualche struttura da qualche parte è spazzatura raccolto mentre l'utente fa clic su "OK". Così ho messo il mio codice come
window.setTimeout(function() { alert(alrt_msg); } , 1);
Questo ha reso il lavoro senza errori sopra. Tuttavia, dopo aver cercato documentazione o google, non sono stato in grado di trovare la ragione esatta alla base di questo. Qualcuno può spiegare cosa sta succedendo e se la documentazione contiene un modo specifico per farlo?
Qual è il tuo codice? Cosa succede se si inserisce 'return true;' alla fine del listener di eventi 'onMessage'? –
Credo che il motivo sia che il gestore della risposta del messaggio non aspetta che l'avviso venga cliccato; così quando chiudi l'avviso per consentire allo script di continuare, il gestore non è più lì. Non sono sicuro se questo potrebbe essere considerato un bug. – Goodwine
@ Goodwine, credo che tu abbia ragione. – Methos