Mi secuencia de comandos de contenido envía un mensaje a background.js. En el controlador de devolución de llamada para la respuesta, tenía la última línea como "alert(alrt_msg)"
. Tras la ejecución de código, aparece el cuadro de alerta, pero después de hacer clic en "Aceptar", los espectáculos de la consola de cromo siguientes en rojo:Error de lanzamiento de la extensión de Chrome en la consola
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)
No es mucho más informativo, pero intuitivamente sabía que este error se debe a algún tipo de estructura alguna parte es basura recopilado mientras el usuario hace clic en "Aceptar". Así que puse mi código como
window.setTimeout(function() { alert(alrt_msg); } , 1);
Esto hizo que funcione sin error anterior. Aún así, después de buscar documentación o google, no pude encontrar la razón exacta detrás de esto. ¿Puede alguien explicar qué está pasando y si la documentación contiene una forma específica de hacerlo?
¿Cuál es su código? ¿Qué sucede si inserta 'return true;' al final de su detector de eventos 'onMessage'? –
Creo que la razón es que el controlador para la respuesta del mensaje no espera a que se haga clic en la alerta; así que cuando cierra la alerta para permitir que la secuencia de comandos continúe, el controlador ya no está allí. No estoy seguro de si esto podría considerarse un error. – Goodwine
@Goodwine, creo que tienes razón. – Methos