모든 확장 페이지 (배경 페이지, 팝업, 정보 표시 줄, 페이지 작업은 모두 같은 확장자 내에서 실행됩니다. 하나의 도메인을 가진 웹 페이지라고 생각하면 그 도메인은 확장 ID입니다. 각 확장 페이지는 일반 페이지와 비슷합니다 (웹 사이트를 개발할 때와 비슷합니다.)
모든 확장 페이지 쉽게 서로 통신하는 여러 가지 방법이 이렇게 있습니다
chrome.extension.getBackgroundPage()
직접 해보세요! 내가 할 수있을 때마다 나는이 방법을 사용한다. 내 의견으로는 그것의 청소부.
var bkg = chrome.extension.getBackgroundPage();`
bkg.ping();`
chrome.extension.onRequest.addListener 및 chrome.extension.sendRequest 아래와 같이
, 당신은뿐만 아니라 정보를 전달하는 extension messaging를 사용할 수 있습니다. 이벤트 지향적 이길 원할 때이 방법을 사용합니다. 나는 이것을 확장 페이지에서 거의 사용하지 않는다.
popup.html
chrome.extension.sendRequest({method: 'ping'}, function(response) {
// response.result
});
background_page.html
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (request.method == 'ping') {
sendResponse({result: 'pong'});
}
});
이제 "확장자 페이지"및 "Content Scripts"사이의 차이가있다. 그것을 이해하기 위해이 문서를주의 깊게 읽으십시오. 콘텐츠 스크립트는 확장 페이지가 아니며 확장 프로그램 페이지에서 수행 할 수 없습니다. 위에서 언급 한 페이지 중 어느 페이지와도 직접 통신 할 수 없습니다. 콘텐츠 스크립트는 확장 페이지가 아닌 웹 페이지의 컨텍스트에서 실행되는 JavaScript 파일입니다. 인식해야 할 중요한 차이점이 있습니다.
따라서 확장 페이지와 콘텐츠 스크립트간에 통신하려면 Messaging을 사용해야합니다. 그 페이지는 많은 정보를 가지고 있습니다. 이는 메시징을 사용한 방법 (위의 2 단계)과 매우 유사하지만 요청을 보내는 방법 만 다릅니다. 확장 페이지 (배경, 팝업, 페이지 등)에서 콘텐츠 스크립트로 단일 요청을 보내야하므로 chrome.tabs.sendRequest을 사용해야합니다. 그렇게하려면 탭의 ID를 알아야합니다. 자세한 내용은 Tab API을 참조하십시오.
내선이 콘텐츠 스크립트와 매우 자주 통신하는 경우 긴 수명 연결을 사용할 수 있습니다. 위의 메시징 섹션에서 잘 설명되어 있습니다.
비슷한 질문에 대해 많은 질문과 다른 사람들에게 답변 해 왔습니다. 자바 스크립트 경험이 있으신 분들께서는 문서를 읽으시기를 권장합니다. 필요한 모든 것을 갖추고 있습니다. API를 읽으면 이제 Content Script와 Extension Pages의 차이점을 이해하고 그 사이의 통신은 Extension Messaging을 통해 이루어 졌으면합니다.
관련 내용 : [브라우저 동작, 배경 스크립트 및 크롬 확장의 콘텐츠 스크립트 간의 통신을위한 컨텍스트 및 방법?] (http://stackoverflow.com/questions/17246133/contexts-and-methods-for-communication- 브라우저 간 액션 - 배경 -sc) –