我正在研究一个简单的扩展,它基于浏览器中的某些用户操作将消息发送到一个弹出脚本,然后该脚本又调用后台脚本中的函数。我是新开发的Chrome扩展程序,请耐心等待。异常邮件检测
目前,我有一个设置,检测用户在内容脚本浏览器中的操作,发送消息到弹出脚本,并调用检测到的背景页面中的功能(或者我相信,我没有通过background.js获取警报或日志以显示任何地方)。
我的问题是:为什么在从后台脚本发送消息时没有检测到消息,并且是在我的后台脚本中被调用的函数呢?
的manifest.json
{
...
"browser_action": {
"default_icon": "gamify.png",
"default_popup": "user_stats.html"
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["jquery.min.js", "contentscript.js"],
"run_at": "document_end"
}
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"permissions": [
"storage"
]
}
contentscript.js
$(document).ready(function() {
$("#page-container").click(function() {
chrome.runtime.sendMessage({
action: "Load"
});
});
});
//弹出脚本
$(document).ready(function() {
var bg = chrome.extension.getBackgroundPage();
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
var action = request.action;
if (action == "Load") {
bg.initialize();
}
});
});
background.js
function initialize() {
chrome.runtime.sendMessage({
action: "Start"
});
chrome.storage.sync.get("initialized", function(data) {
alert("BS: Get initialized: " data);
//Do stuff here
});
}
你能解释一下把这个“代理”代码放在弹出窗口背后的逻辑吗? – Xan 2014-10-11 22:22:44
更进一步,我打算让弹出式js处理内容和后台脚本之间的消息/数据传递,同时使用该数据修改显示弹出框中的元素。 – Chris 2014-10-11 22:25:41
坏主意。我会解释为什么。 – Xan 2014-10-11 22:33:30