我正在尝试通过上下文菜单 onclick 事件从我的后台脚本中的内容接收消息。这是内容脚本:
var clickedEl = null;
document.addEventListener("mousedown", function(event){
if(event.button == 2) {
clickedEl = event.target;
console.log("event.target = "+event.target);
}
}, true);
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
if(request == "getClickedEl") {
console.log("requestValue = " + clickedEl);
sendResponse({value: clickedEl.value});
}
});
这是我的后台脚本,当单击上下文菜单时,我将消息发送到内容脚本。
function doScripts(context, targ){
chrome.tabs.executeScript(null, {code: "var doingBrowserAction = "+(context)+"; var contextTarg = "+(targ)+";"}, function(){
chrome.tabs.executeScript(null, {file: "js/myscript.js"}, function(){});
});
}
function getClickHandler(info, tab) {
chrome.tabs.sendMessage(tab.id, "getClickedEl", function(clickedEl) {
var currTarg = clickedEl.value;
doScripts(false, currTarg);
});
}
chrome.contextMenus.create({
"title" : "DESTROY!",
"type" : "normal",
"contexts" : ["page","selection","link","editable","image","video","audio"],
"onclick" : getClickHandler
});
我正在确认从后台脚本调用 onMessage
console.log("requestValue = " + clickedEl);
在onMessage
听众中,这是有效的。我的主要问题是,当我在后台脚本中获取变量时,它显示为 null,而当我尝试将变量传递给doScripts
函数时,它不起作用。我认为我在解析消息时在接收端遇到了问题,但我不确定我做错了什么。