나는 문제가있다. 메시지 전달을 통해 콘텐츠 스크립트에서 배경 페이지로 DOM 데이터를 전송했습니다. 내가 알고 싶은 것은 옵션 페이지와 배경 페이지 사이에 통신 채널을 구축하는 방법입니다. API chrome.extension.getBackgroundPage()
은 유용하지 않습니다. 전통적인 메시지가 sendRequest
과 addlistener
을 통과하지도 않습니다. 이 데이터를 배경 페이지에서 옵션 페이지로 어떻게 전송합니까? 누군가 설명 할 테스트 된 스 니펫을 제공 할 수 있습니까?옵션 페이지와 크롬 확장의 배경 페이지 간의 통신 방법
이것은 내가 시도한 것입니다. 내 contentscript.js에서 는
<script>
var selected_Text ="";
window.addEventListener("dblclick",function(event){
selected_Text = String(window.getSelection());
chrome.extension.sendRequest({greeting: "maprender",name:selected_Text}, function(response) {
alert("reached here")
console.log(response.farewell);
});
//i am to then load options.html on DOM like this
var Div = document.createElement("iframe");
Div.setAttribute('src', chrome.extension.getURL('options.html'));
Div.setAttribute("style","width:130px;height:80px;position:absolute;left:10px;");
Div.setAttribute("id","xyz");
document.body.appendChild(Div);
</script>
난 내가이 방법 을 시도 options.html 옵션 페이지에서이 텍스트의 값에 액세스하려면 지금이
<script>
var Addr_details={
place:null
};
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
if (request.greeting == "maprender")
{
alert("reached here sendin resp"+request.name);
Addr_details.place = request.name;
sendResponse({farewell: "goodbye"});
}
else
sendResponse({}); // snub them.
});
</script>
처럼 background.html에서 selected_Text을 retreive 하나는이 같은 chrome.extension.getBackgroundPage()를 사용했다 :
<script>
function init(){
var bkg = chrome.extension.getBackgroundPage();
alert("the selected text is "+bkg.Addr_details.place);
}
</script>
초기화는 options.html의 온로드 .This 나에게 V를 제공하지 않습니다이다 alue. 실제로 그것은 chrome.extension.backgroundPage의 초기화시 종료됩니다.
내가 시도한 또 다른 방법은 다른 인사말을 사용하여 contentscript.js에서 비슷한 요청 (예 : contentscript.js에 이미있는 것과 비슷한 요청)을 작성하고 options.html에서 청취자를 추가하는 것입니다. 수신자 측 (옵션 페이지)에서 요청 후 contentscript 콜백을 받기 때문에. 나는 분명히 뭔가 잘못하고있는 중입니까? 제발 도와주세요.
"API chrome.extension.getBackgroundPage()는 유용하지 않습니다."이유는 무엇입니까? –