chrome扩展上下文菜单,如何在没有选择时显示菜单项?

Bet*_*tty 8 contextmenu google-chrome-extension

我想做的是:

如果用户没有选择任何内容,则显示菜单项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
});
Run Code Online (Sandbox Code Playgroud)

ser*_*erg 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); 
Run Code Online (Sandbox Code Playgroud)

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
            });
        });
    }
});
Run Code Online (Sandbox Code Playgroud)