2017-11-13 1 views
0

콘텐츠 스크립트와 배경 페이지 사이에서 통신해야하는 크롬 확장자가있는이 이상한 버그가 있습니다. 그것은 잠시 동안 작동하는 것,하지만 갑자기 작동을 멈 춥니 다. 다시 작동하게하는 유일한 방법은 확장을 제거하고 다시 설치하는 것입니다. 이 문제는 크롬 스토어의 버전과 내 로컬 개발자 버전 모두에서 발생합니다. (개발자 버전을 다시로드하면 하지이 문제를 해결한다.)잠시 후 Chrome 확장 프로그램이 작동하지 않습니다. 응답이 정의되지 않았습니다

관련 부분은 다음과 같습니다 I 콘텐츠 스크립트가 실제로 관련 페이지에 주입 페이지를 검사에서 볼

chrome.pageAction.onClicked.addListener(function (tab) { 
    chrome.tabs.sendMessage(tab.id, {greeting: "hello"}, function(response) { 
     //response is undefined at this point 
    }); 
}); 

하지만, 리스너 내부의 코드가 실행되지 않습니다 : https://chrome.google.com/webstore/detail/hi-res-cover-art-grabber/oiagpaldkopdbolnebgjlmihmejjkaji 그리고 여기에 전체 소스 코드 :

chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) { 
    //never runs this code 
}); 

당신은 설치 여기 버전을 찾을 수 https://github.com/MrMamen/CoverGrabber/tree/master/chrome

+0

콘텐츠 스크립트가 도움말에 삽입 된 _page_을 다시로드합니까? 얼마나 자주 이런 일이 발생합니까? 소스 코드를 보지 않고 콘텐츠 스크립트를 어떻게 주입합니까? – Xan

+0

다시로드하면 도움이되지 않습니다. 하지만 제거/설치 후에 다시로드해야합니다. 방금 브라우저를 종료 할 때마다 깨지는 것 같았습니다. 아마도 초기화에 오류가 있습니까? https://github.com/MrMamen/CoverGrabber/blob/master/chrome/background.js – MrMamen

답변

1

background.js에있는 모든 JavaScript는 설치 및 업데이트시에만 호출되는 chrome.runtime.onInstalled.addListener 이벤트에 있으므로 브라우저를 다시 열 때 호출되지 않습니다.

외부 이벤트를 등록하고 싶으면 확장 프로그램을 제거한 후 다시 설치할 때 확장 프로그램에서만 이벤트를 등록하십시오.

관련 문제