Google chrome extension Chrome扩展上下文菜单,区分图像和链接事件

Google chrome extension Chrome扩展上下文菜单,区分图像和链接事件,google-chrome-extension,contextmenu,Google Chrome Extension,Contextmenu,在我的chrome扩展中,我添加了两个上下文项“getlink”和“getimage”。主要区别在于,在设置它们时,它们分别具有链接和图像的“上下文”。但当右键单击用作链接的图像时,您可以同时选择以下两种选项: 当点击其中一个时,进入监听器的数据似乎是相同的,我需要能够区分这两个,以了解上下文是图像还是链接,从而以不同的方式处理它们。这是我的密码: chrome.runtime.onInstalled.addListener(function() { var context = "imag

在我的chrome扩展中,我添加了两个上下文项“getlink”和“getimage”。主要区别在于,在设置它们时,它们分别具有链接和图像的“上下文”。但当右键单击用作链接的图像时,您可以同时选择以下两种选项:

当点击其中一个时,进入监听器的数据似乎是相同的,我需要能够区分这两个,以了解上下文是图像还是链接,从而以不同的方式处理它们。这是我的密码:

chrome.runtime.onInstalled.addListener(function() {
  var context = "image";
  var title = "Copy Image";
  var id = chrome.contextMenus.create({"title": title, "contexts":[context],
                                         "id": "context" + context});  
});
chrome.runtime.onInstalled.addListener(function() {
  var context = "link";
  var title = "Copy link";
  var id = chrome.contextMenus.create({"title": title, "contexts":[context],
                                         "id": "context" + context});  
});
chrome.contextMenus.onClicked.addListener(onClickHandler);

function onClickHandler(info, tab) {
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
    chrome.tabs.sendMessage(tabs[0].id, {action: "imageAdded", subject: info.srcUrl}, function(response) {
});
看一看,您可以通过
mediaType

“图像”、“视频”或“音频”中的一种,如果在这些类型的元素之一上激活了关联菜单


如果想知道单击了哪个菜单项,可以在传递到
onClicked
处理程序的对象的
menuItemId
属性中获取单击的上下文菜单项的
id
值:

function onClickHandler(info, tab) {
    console.log(info.menuItemId);
    //...
}

info
对象的
menuItemId
属性在这两种情况下是否真的相同?如果是,它是哪个id:
contextimage
还是contextlink`?@apsillers啊,我怎么会错过这个!如果你把这个作为回答,我会接受的it@DasBeasto,看来我误解了你的问题。。。我只是认为你想区分用户是否在不同的目标(链接/图像)上单击相同的菜单,然而,似乎你想要的是在相同的目标上单击不同的菜单。。。然后我同意,只是
menuItemId
解决了这个问题。@HaibaraAi是的,很抱歉,我想这不清楚,我只是想知道用户是否要求图像或特定链接图像元素的链接。谢谢你的回答,尽管我很感激。你能分享一下你是如何复制图片链接和图片的吗?谢谢这对普通链接有用。不幸的是,如果链接是一个图像,“复制链接”事件仍然会给出mediaType=“image”。@DasBeasto,你能给我一个示例链接吗?