2011-03-17 9 views
13

Recibo este error en la página de fondo al responder a la solicitud del script de contenido. ¿Alguien sabe qué puede estar causando este error?Motivo de error no detectado: intento de utilizar un objeto de puerto desconectado

completo seguimiento de la pila:

Uncaught Error: Attempting to use a disconnected port object chrome/RendererExtensionBindings:147 
chrome.Port.postMessage  chrome/RendererExtensionBindings:147 
chromeHidden.Port.dispatchOnConnect.connectEvent   chrome/RendererExtensionBindings:89 
myExtension.foo.sendResponse.state  background.js:1573 
db.readTransaction.tx.executeSql.paramStr  background.js:1038 

Esto sólo ocurre después de un par de horas de navegación por la recarga de extensión no está ayudando - no es que habría una solución después de reiniciar el navegador Chrome todo vuelve a la normalidad para el par de El script de contenido de horas puede seguir enviando solicitudes al fondo, pero NO se puede enviar ninguna respuesta desde el fondo. ¿Hay alguna forma de que pueda detectar este error no detectado y reiniciar el oyente?

Estoy usando chrome.extension.onRequest.addListener para mi comunicación. Antes de responder, consulto DB y no envío ninguna otra respuesta antes de que la consulta finalice.

Gracias, Marek

+1

Proporcione su código dentro de la página de fondo y el script de contenido. – serg

Respuesta

14

Esto se produce cuando una conexión se cierran. Por ejemplo, si abre una pestaña que tiene insertado el content_script, abre una conexión, la pestaña se cierra y luego la página de fondo intenta pasar un mensaje. Fallará porque la pestaña ya no está activa para recibir el mensaje.

En su caso, supongo que a medida que las pestañas se cierran y las pestañas nuevas se abren, está intentando publicar mensajes con la pestaña anterior en lugar de crear una nueva conexión a la nueva pestaña. Recomendaría leer nuevamente el long-lived connections section.

1

En mi caso, sin embargo, necesitaba proporcionar la función sendResponse a chrome.runtime.sendMessage (msg, responseCallbackMissingHere), que le dará el error "Intentar utilizar un objeto de puerto desconectado".

+0

sendMessage() o postMessage()? –

+0

chrome.runtime.sendMessage() https://developer.chrome.com/extensions/runtime#method-sendMessage – Doug

Cuestiones relacionadas