Chrome扩展程序:是否可以在上下文菜单项中显示链接文本?

时间:2020-02-08 17:12:57

标签: javascript jquery google-chrome google-chrome-extension

我已经开始为Google Chrome构建一个简单的扩展程序,当右键单击一个链接或在选择一些文本的情况下单击鼠标右键时,它将添加一个新的上下文菜单项。该菜单项应包含

形式的文本

Search for "{link/select text}" on XYZ

如果我只是对选定的文本感兴趣,我可以这样设置标题格式:

Search for "%s" on XYZ

打开上下文菜单时,%s将变成所选的文本。桃花但是,将鼠标悬停在链接上时要获得相同的行为并非易事。该字符串变成Search for "" on XYZ,这当然是不可接受的。对于这两种情况,我都希望具有相同的行为。

我为Firefox创建了一个类似的扩展程序,其中有一个onShown事件,该事件在上下文菜单打开时触发,并为您提供具有linkTextselectionText属性的对象。我使用该事件的侦听器将要搜索的文本保存在全局变量中,并调用上下文菜单项的update方法。

不幸的是,我无法通过上下文菜单的Chrome API找到解决方法。这里有update方法,所以我可以更改标题,但找不到onShown之类的事件,无法在其中检索两个值并调用此update方法。

到目前为止,这是我的代码:

var url = "https://www.some-website.com/search?q=";
var searchterm = "";
var contexts = ["selection","link"];
var title = `Search "%s" on XYZ`;
var id = "contextSearch";

// Install our extension when chrome.runtime.onInstalled is called
chrome.runtime.onInstalled.addListener(function() {

  // Create the context menu item
  chrome.contextMenus.create(
    {
      "id": id,
      "title": title, 
      "contexts": contexts,
      "onclick": contextMenuAction
    }, 
    // Show successful creation in log
    function() {
      console.log("successfully created");
  });

});

function contextMenuAction(info, tab) {
  console.log(info);    
  console.log(tab);

  // Save the searchterm and open a new tab to execute the search
  searchterm = info.selectionText;
  chrome.tabs.create({url: url+searchterm});
}

infotab对象不包含有关链接文本的任何信息,即使它们包含链接文本,也为时已晚,因为我需要在打开上下文菜单时获取该文本。你知道有什么方法可以实现我的目标吗?如果我的Chrome扩展程序的功能少于Firefox的功能,那将是可悲的。

0 个答案:

没有答案
相关问题