Chrome扩展:ContextMenu右键单击链接,而不是选择文本

Chrome extension: ContextMenu Right click link instead of selectiontext?

本文关键字:选择 文本 链接 扩展 ContextMenu 右键 单击 Chrome      更新时间:2023-09-26

我正在开发一个chrome扩展,它的功能与在新选项卡中打开几乎相同,但由于chrome安全原因,"在新选项卡上打开"显然不允许打开文件(如file://)的链接。因此,通过拥有此扩展,拥有此自定义扩展的用户将能够打开url链接。

我设法把一些东西放在哪里,当我选择链接文本的任何部分,然后我右键单击上下文菜单,它可以在新的选项卡中打开链接。我现在想要的是能够右键单击链接而不选择文本。

我尝试过将上下文类型更改为链接,但似乎不起作用。

这是进行选择的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
}

谢谢!

使用上下文类型。

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

我通过将以下上下文设置为all找到了解决方案。

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