是否可以使用 javascript 捕获上下文菜单的“在新选项卡中打开”单击事件?

Is it possible to capture "Open in New Tab" clicked event of context menu using javascript?

提问人:pso 提问时间:3/12/2018 更新时间:3/12/2018 访问量:6485

问:

我知道我可以使用jQuery的“上下文菜单”来捕获右键单击事件,但我的问题是,如何在上下文菜单出现后捕获事件,即当用户单击“在新选项卡中打开链接”操作时。

有什么帮助吗?

谢谢。

enter image description here

JavaScript jQuery 浏览器 ContextMenu 右键单击

评论

0赞 Gokul Chandrasekaran 3/12/2018
你在这里参考这篇文章:stackoverflow.com/questions/850058/......
2赞 pso 3/12/2018
我提到了您提供的链接,在另一个选项卡中打开该页面后,他们似乎正在处理该页面。就像在页面加载事件上查看它的历史记录一样。我需要做的是在打开新页面之前在同一页面上捕获事件。
0赞 CBroe 3/12/2018
我认为这根本不可能,至少在网站上下文中运行的 JS 是不可能的。这闻起来非常 X/Y 问题 - 你能描述一下你试图用这个解决什么实际问题吗?
1赞 pso 3/12/2018
我的情况是,我有一个搜索结果页,该页位于 ASPX 应用程序中。当用户单击搜索结果结果行中的特定链接(悬停时出现)时,我需要将该行转换为不同的颜色以识别它已被查看。定期点击我可以处理没有问题。但是,当用户使用“在新选项卡中打开链接”上下文菜单打开此链接时,我不知道我是否可以捕获此单击。谢谢你向我介绍 X/Y 问题。

答:

-3赞 Ryuk Lee 3/12/2018 #1

我找到了这个解决方案

<script type='text/javascript'>
jQuery(function($){
    $('a').mousedown(function(event) {
        switch (event.which) {
            case 1:
                //alert('Left mouse button pressed');
                $(this).attr('target','_self');
                break;
            case 2:
                //alert('Middle mouse button pressed');
                $(this).attr('target','_blank');
                break;
            case 3:
                //alert('Right mouse button pressed');
                $(this).attr('target','_blank');
                break;
            default:
                //alert('You have a strange mouse');
                $(this).attr('target','_self"');
        }
    });
});

这里是jQuery:检测鼠标单击并在新选项卡中打开目标

评论

4赞 pso 3/12/2018
您的解决方案允许我捕获不同的鼠标单击,但它无助于捕获右键单击后出现的上下文菜单上的事件单击。
0赞 Ryuk Lee 3/12/2018
您需要使用库来处理上下文菜单。尝试使用此 swisnl.github.io/jQuery-contextMenu/demo.html
2赞 pso 3/12/2018
感谢您的链接 Ryuk,但这正在为用户创建一个自定义上下文菜单,该菜单禁用浏览器的默认右键单击交互。我一直在寻找一些东西来捕获浏览器提供的默认交互。:)
1赞 Arashtad 12/6/2023 #2

遗憾的是,当通过 JavaScript 选择“在新选项卡中打开链接”时,直接捕获浏览器上下文菜单触发的事件是不可行的。上下文菜单及其操作(包括“在新选项卡中打开链接”)是浏览器用户界面不可或缺的一部分,出于安全考虑,它仍然无法通过标准 Web API 访问和控制。

浏览器旨在防止网页篡改或捕获敏感的用户交互,例如在新选项卡中打开链接。这种有意的设计旨在保护用户免受潜在恶意活动的侵害。

如果您的目标是在新选项卡中打开链接时执行特定操作,则可能需要探索替代方法。例如,向链接添加自定义点击处理程序有助于捕获点击事件,但它不会提供有关用户是否选择在上下文菜单中的新选项卡中打开链接的信息。

请务必记住,在未经用户明确同意的情况下试图操纵或干扰浏览器级交互可能会导致用户体验欠佳,并可能被视为侵入性。尊重用户隐私并遵守浏览器安全功能至关重要。