Contextmenu Safari扩展帮助!仅当用户右键单击类时显示上下文菜单项

Contextmenu Safari扩展帮助!仅当用户右键单击类时显示上下文菜单项,contextmenu,safari-extension,Contextmenu,Safari Extension,关于Safari扩展的上下文菜单项,我有一个简单的问题。我只希望当用户右键单击HTML页面上的特定类时,上下文菜单项“菜单项标签A”出现。你知道我应该听什么类型的活动,或者我应该如何做到这一点吗?谢谢。您需要的是一个注入脚本。请参阅Luke链接的文档页面,标题为“添加上下文信息”。注入的脚本必须具有如下“contextmenu”事件处理程序: document.addEventListener("contextmenu", function (evt) { safari.self.tab

关于Safari扩展的上下文菜单项,我有一个简单的问题。我只希望当用户右键单击HTML页面上的特定类时,上下文菜单项“菜单项标签A”出现。你知道我应该听什么类型的活动,或者我应该如何做到这一点吗?谢谢。

您需要的是一个注入脚本。请参阅Luke链接的文档页面,标题为“添加上下文信息”。注入的脚本必须具有如下“contextmenu”事件处理程序:

document.addEventListener("contextmenu", function (evt) {
    safari.self.tab.setContextMenuEventUserInfo(evt, evt.target.className);
}, false);
在全局页面脚本中,应该有如下内容:

safari.application.addEventListener("contextmenu", function (evt) {
    // evt.userInfo will have the classname of the right-clicked element
    if (evt.userInfo == 'my_special_className') {
        evt.contextMenu.appendContextMenuItem('myCommandName', 'My Context Menu Item');
    } else {
        // don't insert the context menu item
    }
}, false);
有关注入脚本的更多信息:


关于setContextMenuEventUserInfo的更多信息:

您需要的是一个注入脚本。请参阅Luke链接的文档页面,标题为“添加上下文信息”。注入的脚本必须具有如下“contextmenu”事件处理程序:

document.addEventListener("contextmenu", function (evt) {
    safari.self.tab.setContextMenuEventUserInfo(evt, evt.target.className);
}, false);
在全局页面脚本中,应该有如下内容:

safari.application.addEventListener("contextmenu", function (evt) {
    // evt.userInfo will have the classname of the right-clicked element
    if (evt.userInfo == 'my_special_className') {
        evt.contextMenu.appendContextMenuItem('myCommandName', 'My Context Menu Item');
    } else {
        // don't insert the context menu item
    }
}, false);
有关注入脚本的更多信息:


有关setContextMenuEventUserInfo的更多信息:

这将使您朝着正确的方向前进。我相信这和在回调中检查单击项的类一样简单。谢谢我尝试收听“contextmenu”事件,但它似乎没有给我用户右键单击的HTML元素,而是一些“SafariBrowserTab”对象。即使我得到了它,我也不知道如何防止上下文菜单项出现。嗯,把它留给Safari吧P你试过检查SafariTab物体吗?检查它的孩子,甚至它孩子的孩子。您可以在其中找到单击的对象。另外,这是一个完全的猜测,但是在回调中返回
false
可能会阻止上下文菜单的显示?我只是仔细检查了文档,它看起来真的像
event。target
返回单击的对象。我对Safari扩展非常陌生,除了确保“警报”呼叫。“console.log”似乎不起作用。我将查看“SafariBrowser”选项卡,但我认为它不会给我用户右键单击的HTML元素。我想阻止显示菜单项,而不是整个上下文菜单。谢谢你的帮助!这会让你走上正确的方向。我相信这和在回调中检查单击项的类一样简单。谢谢我尝试收听“contextmenu”事件,但它似乎没有给我用户右键单击的HTML元素,而是一些“SafariBrowserTab”对象。即使我得到了它,我也不知道如何防止上下文菜单项出现。嗯,把它留给Safari吧P你试过检查SafariTab物体吗?检查它的孩子,甚至它孩子的孩子。您可以在其中找到单击的对象。另外,这是一个完全的猜测,但是在回调中返回
false
可能会阻止上下文菜单的显示?我只是仔细检查了文档,它看起来真的像
event。target
返回单击的对象。我对Safari扩展非常陌生,除了确保“警报”呼叫。“console.log”似乎不起作用。我将查看“SafariBrowser”选项卡,但我认为它不会给我用户右键单击的HTML元素。我想阻止显示菜单项,而不是整个上下文菜单。谢谢你的帮助!请记住,
contextmenu
事件的
target
可能没有您要查找的类名,但它的一个祖先可能有。如果这很重要,您必须检查事件目标的所有祖先的类名。请记住,
contextmenu
事件的
target
可能没有您要查找的类名,但它的祖先之一可能有。如果这很重要,您必须检查事件目标的所有祖先的类名。