2016-07-08 4 views
0

삽입 된 스크립트는 콘텐츠 스크립트가 보내는 내용을 얻지 못합니다.contentScript에서 injectedScript로 메시지 보내기

document.dispatchEvent(new CustomEvent('ToFBScript',{detail: {data: "Hello World"}})); 

//Injecting Script 
var s = document.createElement('script'); 
s.src = chrome.extension.getURL('fbscriptforextension.js'); 
(document.head||document.documentElement).appendChild(s); 
s.onload = function(){ 
s.parentNode.removeChild(s); 
}; 

내 contentScript

var storage; 
document.addEventListener('ToFBScript',function(e){ 
storage = e.detail.data; 
console.log(storage); 
}); 

내 주입 된 스크립트

+0

가능한 복제 (http://stackoverflow.com/questions/9602022/chrome-extension-retrieving-gmails-original-message) –

+0

게다가 위의 링크, HTTP : //stackoverflow.com/questions/9915311/chrome-extension-code-vs-content-scripts-vs-injected-scripts는 또한 내용 스크립트와 주입 스크립트를 이해하는 데 도움이 될 수 있습니다. –

+0

빠른 참고 사항 : 최근 2 번의 수정으로 내 대답이 무효화되었습니다. 대답을받은 후에 질문을 편집하는 것은 대개 잘못된 생각입니다. 나는 당신이 그 문제를 여전히 가지고 있다면 그것들을 굴려서 새로운 질문을 할 것을 요구할 것이다. – Xan

답변

1

당신은 CustomEventdata 속성을 설정하려고하는,하지만 당신은 detail을 설정할 수 있습니다. 다행히 JSON-serializable으로 설정할 수 있습니다.

document.dispatchEvent(new CustomEvent('ToFBScript', {detail: {data: g}})); 

/* ... */ 

document.addEventListener('ToFBScript', function(e) { 
    storage = e.detail.data; 
} 
[크롬 확장 프로그램 - Gmail의 원래 메시지를 검색]의
+0

이 작업을 수행하고 console.log (storage); 주입 된 스크립트에서 이벤트 리스너와 함께 작동하지만 아무 것도 출력되지 않으며 어떤 이유에서든 삽입 된 스크립트가 이벤트를 수신하지 못한다고 생각합니다. 각 스크립트가로드되거나 주입 될 때와 관련이있을 수 있습니까? – Victoria

+0

글쎄, 어떻게 주사하는지 보여주지는 마라. – Xan

+0

위의 코드를 편집하면 내용 스크립트의 코드 블록에 주입 된 스크립트가 표시됩니다. – Victoria