2011-03-17 2 views
13

콘텐츠 스크립트에서 요청에 응답 할 때 백그라운드 페이지에서이 오류가 발생합니다. 이 오류의 원인을 아는 사람이 있습니까?잡히지 않은 오류의 원인 : 연결이 끊긴 포트 개체를 사용하려고 시도했습니다.

전체 스택 추적이는 다시로드 확장이 도움이되지 않습니다 탐색의 몇 시간 후에 발생

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 

이 - 모든 크롬 브라우저를 다시 시작 해결책이 될 것입니다하지 않는 것이이의 몇 정상으로 돌아 오기 시간 내용 스크립트는 배경으로 요청을 계속 보낼 수 있지만 백그라운드에서 응답이 없습니다 다시 보낼 수 있습니다.이 잡히지 않은 오류를 잡아 내고 수신기를 재설정 할 수있는 방법이 있습니까?

내 커뮤니케이션에 chrome.extension.onRequest.addListener를 사용하고 있습니다. 내가 응답하기 전에 쿼리 DB가 끝나기 전에 다른 응답을 보내지 않습니다.

감사합니다, 마렉

+1

배경 페이지 및 콘텐츠 스크립트에 코드를 입력하십시오. – serg

답변

14

연결이 닫히지 경우가 발생합니다. 예를 들어, content_script가 삽입 된 탭을 열면 연결이 열리고 탭이 닫힌 다음 background_page가 메시지를 전달하려고 시도합니다. 탭이 더 이상 메시지를 수신 할 수 없으므로 실패합니다.

귀하의 경우에는 탭이 닫히고 새 탭이 열리면 새 탭에 대한 새 연결을 만드는 대신 이전 탭 ID가있는 메시지를 게시하려고합니다. 다시 long-lived connections section을 통해 읽는 것이 좋습니다.

1

그러나 제 경우에는 "disconnected port object 사용 시도 중"오류를 발생시키는 chrome.runtime.sendMessage (msg, responseCallbackMissingHere)에 sendResponse 함수를 제공해야했습니다.

+0

sendMessage() 또는 postMessage()? –

+0

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

관련 문제