单击菜单时触发事件

Fire an event when menu is clicked

本文关键字:事件 菜单 单击      更新时间:2023-09-26

我正在做一个Chrome扩展。我使用chrome.contextMenus.create创建了一个菜单项,并传入了函数名以在单击时触发。现在我想做的是,在点击上下文菜单项时获取活动链接的textContent。我应该听什么类型和/或事件?我不知道textContent是否正确。让我试着描述一下:当你在Google上进行查询时(为了方便起见,让我们说"putty"),第一个命中是"putty下载页面- Chiark",它指向某个URL。我想要得到的是这个"PuTTy下载页面- Chiark",而不是它的URL。

编辑:这是我目前为止的记录:

chrome.contextMenus.create({'title': 'Add to mySU bookmarks', 'contexts': ['link', 'page'], 'onclick': mySUBookmark});
function mySUBookmark() {
  var a = document.addEventListener('click', function() {
  ...
  });
}

我想知道我是否走在正确的道路上。

问候,

你的点击处理程序,被传递一个contextMenusInternal.OnClickData info对象,它有一些被点击的属性(不是实际的对象本身)。对于链接元素,这包括一个linkUrl属性,您可以使用它为元素创建一个元素选择器,并将其传递给您的内容脚本(可以访问页面DOM)。

这可能是如下所示(您可能需要更改以适用于您的扩展)

function mySUBookmark(info, tab) {
   var elSelector = 'a[href="'+info.linkUrl+'"]';
   console.log(elSelector);
   // now send the selector to the content script on the page so it can use it
   // to select the element from the page DOM and do whatever you want with the
   // text / html of the element
   chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
      chrome.tabs.sendMessage(tabs[0].id, { elSel: elSelector }, function(resp) {});
   });
}

这些链接可以帮助我们理解这些东西是如何工作的,

  • 上下文菜单示例
  • Chrome扩展内容脚本
  • 从后台发送消息到上下文脚本
相关文章: