자바 스크립트 런타임에 내 확장 프로그램의 콘텐츠 스크립트에서 실행하려는 탭에 대한 메소드가 있습니다. 액면가에서는 컨텍스트간에 메시지 전달이 필요하지만 CS-to-CS 메시지에 대한 문서는 찾을 수 없으며 탭에서 CS 또는 CS에서 배경으로 만 볼 수 있습니다. 본질적으로 콘텐츠 스크립트 참조의 Communication with the embedding page 섹션을 전환하고 싶습니다. ,콘텐츠 스크립트에서 자바 스크립트 페이지로 메시지 보내기
listenerScript = document.createElement('script');
listenerScript.textContent = "window.addEventListener('message',function(ev){console.log('New event: ' + ev);},false);console.log('installed');";
(document.head||document.documentElement).appendChild(listenerScript);
listenerScript.remove();
는이 리스너가 등록되어
지금까지, 나는 작은 자바 스크립트 페이로드를 주입하여 탭의 window
에 이벤트 리스너를 부착하고 (이 메시지의 올바른 유형의 탭 방법을 트리거합니다) 그러나 나는 어떻게 내 콘텐츠 스크립트에서 그것을 실행하는 알아낼 수 없습니다. 콘텐츠 스크립트의 window.postMessage()
은 아무 것도하지 않는 것 같으며, 설명서에서는 chrome.runtime
을 사용하여 백그라운드 스크립트 용 포트를 만드는 방법에 대해서만 설명합니다.
가능한 가장 간단한 방법으로 콘텐츠 스크립트에서 탭으로 메시지를 전달하는 방법은 무엇입니까?
링크 된 문서는 'window.postMessage ({type : "FROM_PAGE", 텍스트 : "안녕하세요. 웹 페이지!"}, "*"); 그냥''* ''을 잊지 마라. – wOxxOm
콘텐츠 스크립트에서? 위의 스 니펫으로 인용 된 정확한 코드를 페이지에 삽입하려고 시도했지만 아무 것도 로깅하지 않습니다. 나는'page-> CS'가 아니라'CS-> page'에 가려고한다는 것을 기억하십시오. – RedBassett
내 테스트 확장 프로그램은 다음과 같습니다. https://github.com/redbassett/extension-message-test 삽입 된 스크립트 및 전송중인 메시지에 대한 로그 메시지가 표시되지만 이벤트 수신기는 실행되지 않습니다. – RedBassett