4


사용자가 방문하는 특정 페이지에 기능을 추가하는 크롬 확장 기능을 작성 중입니다.
이렇게하려면 페이지에서 호출 할 수 있어야하는 몇 가지 변수와 함수를 주입해야합니다.
이러한 변수/함수는 내용 스크립트에서 생성됩니다.크롬 확장 프로그램에서 페이지를 가져올 함수/변수를 입력하십시오.

그러나 콘텐트 스크립트는 한적한 환경에서 실행되기 때문에 호스트 페이지에서 액세스 할 수 없습니다.

본 기사에 따르면 http://code.google.com/chrome/extensions/content_scripts.html#host-page-communication 콘텐츠 스크립트와 호스트 페이지는 이벤트를 추가하여 DOM을 통해 통신 할 수 있습니다.
하지만 그건 일을하는 끔찍한 방법이며, 나는 메소드/변수를 쉽게 삽입 할 수있는 방법을보고 싶습니다.

이러한 가능성이 있습니까?

감사합니다. 내 확장에 코딩 방법은 다음과

+3

[A 크롬 확장 구축 - 콘텐츠를 사용하여 페이지에 코드를 삽입 :

보내는 스크립트에 이런 식으로 뭔가 : 수신 스크립트에 다음

window.postMessage({ type: "messageType", params: { param: "value", anotherParam: "value" } }, "*"/*required!*/); 

그리고 이런 식으로 뭔가를 할 스크립트] (http://stackoverflow.com/questions/9515704/building-a-chrome-extension-inject-code-in-a-page-using-a-content-script)는 변수를 주입하는 방법입니다/함수를 호출합니다. 그러나 메시지를 확장자로 다시 전달하려는 경우 이벤트 처리기를 피할 수 없습니다. –

답변

4

, 내가 ' 메시지를 통해 콘텐츠 스크립트와 페이지 자체간에 통신하는 솔루션을 찾았습니다.

window.addEventListener("message", function(event) { 
     // We only accept messages from ourselves 
     if (event.source != window) 
      return; 

     switch (event.data.type) { 
     case "blabla": 
      // do blabla 
      // you can use event.data.params to access the parameters sent from page. 
      break; 
     case "another blabla": 
      // do another blabla 
      break; 
     } 
    }); 
0

은 script.js에 당신의 manifest.json

"content_scripts": [ 
    { 
     "matches": ["http://*/*"], 
     "js": ["script.js"] 
    } 
], 

http://pagexray.com/extension/

이야 아직 아무도 관심을 끄는 경우

(function(){ 
    var script = document.createElement('script'); 
    script.src = "http://example.com/external.js"; 
    script.addEventListener('load', function() { }); 
    document.head.appendChild(script); 
})(); 
+0

이것은 내 질문에 실제로 대답하지 않습니다. JS 파일은 http : // url이 아닌 확장자 안에 있습니다. – Svarog