Chrome扩展程序:ContextMenu右键单击链接而不是selectiontext?

时间:2015-12-24 05:24:44

标签: javascript google-chrome-extension

我正在开发一个chrome扩展程序,其功能几乎与在新标签页中打开一样,但“在新标签页中打开”显然不允许打开内部网文件的链接,例如file://由于chrome {{3} }。因此,通过此扩展程序,拥有此自定义扩展程序的用户将能够打开网址链接。

当我选择链接文本的任何部分时,我设法放置了一些内容,然后我右键单击上下文菜单,它可以在新选项卡中打开链接。我现在想要的是能够在不选择文本的情况下右键单击链接。

我已尝试将contexttype更改为link,但似乎无效。

这是执行选择然后在新选项卡中打开的background.js代码。

我希望也许有人可以提出一些想法和解释代码,告诉我在这里可以做些什么让我继续前进。

background.js

  var context = "selection";
  var title = "Open Local File";
  var id = chrome.contextMenus.create({
      "title": title,
      "contexts":[context],
      "id": "context" + context}
      );  

// add click event
chrome.contextMenus.onClicked.addListener(onClickHandler);

function onClickHandler(info, tab) {
  var sText = info.linkUrl;
  var myUrl = sText;  
  chrome.tabs.create({ url: myUrl });

};

的manifest.json

{
  "name": "Right-click context sample",
  "description": "sample",
  "version": "0.0.1",
  "permissions": ["contextMenus", "tabs", "<all_urls>"],
  "background": {
    "page" : "background.html",
    "persistent": false
    //"scripts": ["background.js"]
  },
  "manifest_version": 2
}

谢谢!

2 个答案:

答案 0 :(得分:1)

使用ContextType

  var context = "selection";
  var title = "Open Local File";
  var id = chrome.contextMenus.create({
      "title": title,
      "contexts":[context],
      "id": "context" + context,
      contexts:["all"]}
      );  

// add click event
chrome.contextMenus.onClicked.addListener(onClickHandler);

function onClickHandler(info, tab) {
  var sText = info.linkUrl;
  var myUrl = sText;  
  chrome.tabs.create({ url: myUrl });

};

答案 1 :(得分:0)

我通过为所有人设置以下背景找到了解决方案。

  var context = "all";
  var title = "Open Local File";
  var id = chrome.contextMenus.create({
      "title": title,
      "contexts":[context],
      "id": context
  });