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操縱有關,而不是消息。爲什麼不嘗試執行contentcript中的sendResponse回調,並在後臺腳本console.log中響應。 – levi
另外,你檢查了標籤錯誤控制檯?我相信內容中的錯誤或console.logs將顯示在那裏。 – levi
要levi:即使我把一個簡單的語句像alert一樣,如果它在chrome.tabs.querry中,它也不會執行。另外,我無法寫入控制檯。這是我另外打開另一個問題的另一個問題。 –