【发布时间】:2014-02-04 13:16:34
【问题描述】:
我已阅读有关如何将消息从后台 javascript 文件 (main.js) 发送到内容脚本 (content.js) 的文档,但我无法让 onMessage 打开我的警报。
Manifest.json
{
"name": "Example",
"version": "1.0.1",
"manifest_version" : 2,
"description": "Example Description",
"background" : {
"scripts" : ["main.js"]
},
"page_action" : {
"default_icon": {
"19": "icons/19.png",
"38": "icons/38.png"
},
"default_title" : "Example Title"
},
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["lib/jquery-1.8.3.min.js","scripts/content.js"],
"run_at": "document_idle",
"all_frames": false
}],
"permissions": [
"tabs",
"geolocation"
],
"icons": {
"16": "icons/16.png",
"48": "icons/48.png",
"128": "icons/48.png"
}
}
后台 javascript 文件 (main.js)
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
chrome.tabs.sendMessage(tabs[0].id, {action: "SendIt"}, function(response) {});
});
内容 javascript 文件 (content.js)
chrome.extension.onMessage.addListener(function(msg, sender, sendResponse) {
if (msg.action == 'SendIt') {
alert("Message recieved!");
}
});
【问题讨论】:
-
我认为你需要从你的popup.js and not from background调用它
-
我的猜测是在加载内容脚本之前后台正在发送消息。您可以使用页面操作的 onclick 来发送消息吗?
-
Teepeem 的猜测很合理。上面显示的代码是否在
background.js中?如果不是什么触发将消息发送到选项卡? -
后台页面中的代码执行一次(Chrome 启动时)。加载背景页面后,没有任何文档包含内容脚本。因此,您看不到任何警报消息。
-
我对 RobW 和 @Teepeeemm 的洞察力给予了加分。我在发送消息之前添加了选项卡加载完成的触发器。
标签: google-chrome-extension manifest content-script