根据选择渲染上下文菜单

时间:2011-09-17 14:10:45

标签: google-chrome-extension

我想显示不同的菜单选项,具体取决于是选择了数字还是文字。

我尝试过播放内容脚本,但是我无法让它们在gmail中工作,这是我需要它工作的地方。这是我拥有的,它适用于除gmail以外的网站(它是一个https的东西吗?)

Background.html

<script src="driver.js"></script>

content_script.js

document.addEventListener("mousedown", function(event){
  if(event.button == 2) {
    var selection = window.getSelection().toString();
    chrome.extension.sendRequest({cmd: selection});
  }

}, true);

driver.js

chrome.extension.onRequest.addListener(function(request) {
    alert(request.cmd);
});

的manifest.json

{
"name": "Context Menu Search",
"description": "Opens the selected text as keyword in a new window",
"version": "0.1",
"permissions": ["contextMenus"],
  "content_scripts": [
    {
      "matches": ["http://*/*","https://*/*"],
      "js": ["content_script.js"]
    }
  ],
"background_page": "background.html"
}

1 个答案:

答案 0 :(得分:1)

Selection type changes context menu using chrome extension

您必须设置鼠标按下的侦听器。在创建菜单之前,没有其他方法可以获取所选文本。

见这个问题:

chrome extension context menus, how to display a menu item only when there is no selection?

以下是其余部分代码的部分代码。

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);