单击菜单时触发事件

时间:2014-06-09 10:35:38

标签: javascript google-chrome-extension

我正在使用Chrome扩展程序。我已经使用chrome.contextMenus.create创建了一个菜单项,并且还在函数名称中传递了click。现在我想要做的是,当我点击上下文菜单项时,获取活动链接的textContent。我应该听什么类型和/或事件?我不知道textContent是否正确。让我试着说一下:当你在Google上进行查询时(让我们说" putty"为了举例),第一个打击是#34; PuTTY下载页面 - Chiark&#34 ;它指向一些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() {
  ...
  });
}

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

此致 MTO

1 个答案:

答案 0 :(得分:1)

您的点击处理程序会传递contextMenusInternal.OnClickData info object,其中包含点击内容的某些属性(而不是实际对象本身)。对于链接元素,这包括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) {});
   });
}

这些链接有助于理解所有这些内容的工作原理,