2010-05-26 2 views
3

Google 크롬 확장 프로그램의 경우, popup.html 확장 DOM을 조작하기 위해 작성한 자바 스크립트는 팝업 DOM에 영향을주지 않는 것으로 보입니다. content_script.js를 사용하여 브라우저의 현재 웹 페이지 DOM을 조작 할 수 있으며 웹 페이지의 데이터를 가져와 확장 팝업에 출력하는 데 관심이 있습니다 (아래 : popup.html) :크롬에서 웹 페이지의 데이터를 가져 와서 Chrome 확장 프로그램 팝업으로 출력하는 방법은 무엇인가요?

<div id="extensionpopupcontent">Links</div> 
<a onclick="click()">Some Link</a> 

<script type="text/javascript"> 
function click() { 
    chrome.tabs.executeScript(null, {file: "content_script.js"}); 
    document.getElementById("extensionpopupcontent").innerHTML = variableDefinedInContentScript; 
    window.close(); 
} 
</script> 

나는 http://code.google.com/chrome/extensions/messaging.html에서 문서에서 chrome.extension.sendRequest를 사용하여 시도,하지만 난 제대로, 내 경우에는 특히 인사 및 응답을 사용하는 방법을 모르겠어요.

contentscript.js 
================ 
chrome.extension.sendRequest({greeting: "hello"}, function(response) { 
    console.log(response.farewell); 
}); 

답변

2

지금까지 수행 한 작업은 정확합니다. 콘텐츠 스크립트에서 팝업으로 돌아 오는 메시지를 처리하려면 chrome.extension.onRequest 이벤트 리스너를 설정해야합니다.

그래서 팝업이 같은 일을하는 것은 (추가) 작동합니다 :

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) { 
    if (sender.tab && request.greeting == "hello") 
    sendResponse({farewell: "goodbye"}); 
    else 
    sendResponse({}); // snub them. 
}); 

위의 조각이 어떤 작업을 수행하는지, 그것은 (때 sender.tab == true를 콘텐츠 스크립트에서 이벤트를 수신합니다 그 콘텐츠 스크립트에서 가져옴). http://code.google.com/chrome/extensions/messaging.html

+0

나는 또한 콘텐츠 스크립트에서이 필요하다고 밝혀 : 당신이 메시지에 전체 페이지를 읽는다면

, 그것은 좋은 예제와 함께이 모든 것을 설명 var에 myMessage = "..."; // 확장에 전달할 변수 chrome.extension.sendRequest ({greeting : myMessage}, function (응답) {}); 그리고 sendResponse가있는 곳 ({farewell : "goodbye"}); popup.html에서, 우리는 그 변수로 무엇인가를합니다. – chimerical

관련 문제