我正在尝试开发Chrome扩展程序。我正在尝试从后台脚本向内容脚本发送消息。我尝试了以下代码:
清单
{
....
"background": {
"scripts": ["background.js"]
},
"content_scripts": [
{
"matches": ["http://myurl.com", "http://myurl.com"],
"js": ["content.js"],
"run_at": "document_end"
}
]
....
}
后台脚本:
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
console.log("inside");
chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
console.log("Response");
});
});
内容脚本:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log("From Background Script: " + console.greeting);
return true;
});
我检查了控制台。 “内部”和“响应”被记录,但不是“从背景脚本......”
可能是什么问题?
答案 0 :(得分:0)
你的chrome.tabs.query是在非常会话开始时执行的,并在那一刻发送消息......你需要将它包装在某些事件中,比如
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if (tab.url == "http://www.myurl.com") {
chrome.tabs.sendMessage(tab.id, {greeting: "hello"}, function(response) {
console.log("Response");
});
}
});
实际上你并不需要tabs.querry ...你从chrome.tabs.onUpdated监听器获得ID以发送消息