我制作了一个非常简单的chrome extension,它允许用户突出显示DOI编号,右键单击并选择“解析DOI”,然后将它们发送到相关的网页。现在,这是在background.html中完成的:
chrome.contextMenus.create({
"title" : "Resolve DOI",
"type" : "normal",
"contexts" : ["selection"],
"onclick" : getClickHandler()
});
我想限制上下文菜单选项仅在其突出显示的文本以“10”开头时才会显示。有关如何做到这一点的任何建议?我是否需要等待Context Menus模块变得更先进?
答案 0 :(得分:10)
您需要从内容脚本控制内容菜单创建。动态菜单创建/删除应该非常快,并且延迟对于用户来说是不明显的。
沿着这些方向的东西(未经测试):
<强> content_script.js:强>
document.addEventListener("mousedown", function(event){
var selection = window.getSelection().toString();
if(selection.match(/^10\./)) {
chrome.extension.sendRequest({cmd: "create_menu"});
} else {
chrome.extension.sendRequest({cmd: "delete_menu"});
}
}, true);
<强> background.html:强>
chrome.extension.onRequest.addListener(function(request) {
if(request.cmd == "create_menu") {
chrome.contextMenus.removeAll(function() {
chrome.contextMenus.create({
"title" : "Resolve DOI",
"type" : "normal",
"contexts" : ["selection"],
"onclick" : getClickHandler()
});
});
} else if(request.cmd == "delete_menu") {
chrome.contextMenus.removeAll();
}
});