Lau*_*ent 34 javascript dom contextmenu google-chrome-extension
我正在尝试编写一个google chrome扩展,我在其中使用了contextmenu.此上下文菜单仅适用于可编辑元素(例如输入文本).单击并执行contextmenu时,我想在回调函数中检索已执行contextmenu的元素(输入文本),以便更新与此输入文本关联的值.
这是我的扩展的骨架:
function mycallback(info, tab) {
// missing part that refers to the question:
// how to retrieve elt which is assumed to be
// the element on which the contextMenu has been executed ?
elt.value = "my new value"
}
var id = chrome.contextMenus.create({
"title": "Click me",
"contexts": ["editable"],
"onclick": mycallback
});
Run Code Online (Sandbox Code Playgroud)
与mycallback函数关联的参数不包含用于检索右键单击元素的有用信息.这似乎是一个已知问题(http://code.google.com/p/chromium/issues/detail?id=39507)但几个月后没有任何进展.有人知道一个解决方法:没有jquery和/或jquery?
ser*_*erg 52
您可以使用mousedown单击的事件侦听器和存储元素注入内容脚本:
内容script.js
//content script
var clickedEl = null;
document.addEventListener("mousedown", function(event){
//right click
if(event.button == 2) {
clickedEl = event.target;
}
}, true);
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if(request == "getClickedEl") {
sendResponse({value: clickedEl.value});
}
});
Run Code Online (Sandbox Code Playgroud)
background.js
//background
function mycallback(info, tab) {
chrome.tabs.sendMessage(tab.id, "getClickedEl", function(clickedEl) {
elt.value = clickedEl.value;
});
}
Run Code Online (Sandbox Code Playgroud)