1
콘텐츠 스크립트를 실행하여 어딘가에 링크 된 첫 번째 이미지를 식별하고 백그라운드 스크립트에 대한 링크를 반환하고 싶습니다. 그러나 나는 그들 사이에 어떤 메시지도 전달할 수 없으며, 나는 이유를 모른다. 대부분의 코드는 주석입니다. 컨텐츠 스크립트가 첫 번째 헤더를 "테스트"로 변경하여 테스트를 수행하는지 테스트하려고합니다. (메시지없이 수행 할 수있는 유일한 작업은 페이지의 HTML 및 CSS 변경이므로) . 코드는 다음과 같습니다 편집 : 전체 업데이트 된 코드Chrome 확장 프로그램의 콘텐츠 스크립트에서 메시지 전달하기
배경 스크립트 :
chrome.browserAction.onClicked.addListener(function() {
chrome.tabs.query({active:true, currentWindow:true}, function(tabs)
{
chrome.tabs.executeScript(tabs[0].id, {file:"content.js"}, function()
{
console.log("sending first time");
console.log(tabs[0].id);
chrome.tabs.sendMessage(tabs[0].id,{test: "test"}, function (response)
{
if (undefined == response)
{
console.log ("first one didn't work");
chrome.tabs.sendMessage(tabs[0].id, {test: "test"}, function (response)
{
console.log(response.test);
});
}
});
});
});
});
내용 스크립트 :
chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse)
{
/*var test1 = document.getElementsByTagName("h1")[0];
test1.innerHTML="test";*/
sendReponse({test: "123"});
/*var parentList =document.getElementsByTagName("a");
var link = "";
var child;
for (var i=2; i<parentList.length;i++)
{
child=parentList[i].firstChild;
if ("IMG"==child.nodeName)
{
link=parentList[i].href;
break;
}
}
teste1.innerHTML=link;
var answer = new Object();
Answer.link = link;
teste1.innerHTML=answer.link;
sendResponse({messager:answer});*/
});
문제는 DOM 조작과 관련이 있으며 메시지가 아닙니다. contentscript에서 sendResponse 콜백을 실행하고 백그라운드 스크립트 인 console.log에서 응답을 시도해보십시오. – levi
또한 탭 오류 콘솔을 확인 했습니까? 나는 contentscript에서 error 또는 console.logs가 나타날 것이라고 믿습니다. – levi
levi : 경고문처럼 간단한 문장을 넣더라도 chrome.tabs.querry 안에 있으면 실행되지 않습니다. 또한 콘솔에 쓸 수 없습니다. 다른 질문을 한 또 다른 문제입니다. –