我想做的是:
如果用户没有选择任何内容,则显示菜单项A;
如果用户选择了某些内容,则显示菜单项B.
到目前为止,我能得到的是:
如果用户没有选择任何内容,则显示菜单项A;
如果用户选择了某些内容,则同时显示A和B.
我想知道:
如果有选择,如何让项目A消失?
非常感谢!
以下是我的代码:
var all = chrome.contextMenus.create
({
"title": "A",
"contexts":["page"],
"onclick": doA
});
var selection = chrome.contextMenus.create
({
"title": "B",
"contexts":["selection"],
"onclick": doB
});
答案 0 :(得分:7)
您需要向每个页面注入一个内容脚本,该脚本将检查mousedown
事件(显示菜单之前)是否在页面上有选择,然后将命令发送到后台页面根据菜单项创建。
<强> content_script.js:强>
document.addEventListener("mousedown", function(event){
//right click
if(event.button == 2) {
if(window.getSelection().toString()) {
chrome.extension.sendRequest({cmd: "createSelectionMenu"});
} else {
chrome.extension.sendRequest({cmd: "createRegularMenu"});
}
}
}, true);
<强> background.html 强>
chrome.extension.onRequest.addListener(function(request) {
if(request.cmd == "createSelectionMenu") {
chrome.contextMenus.removeAll(function() {
chrome.contextMenus.create({
"title": "B",
"contexts":["selection"],
"onclick": doB
});
});
} else if(request.cmd == "createRegularMenu") {
chrome.contextMenus.removeAll(function() {
chrome.contextMenus.create({
"title": "A",
"contexts":["page"],
"onclick": doA
});
});
}
});
答案 1 :(得分:0)
当OP最初提出问题时(2011年6月17日),也许这是一个错误或功能不同;但今天,OP的代码完全符合预期,只需在contexts
次调用中使用chrome.contextMenus.create()
个参数,就像她写的一样。