提问人:pso 提问时间:3/12/2018 更新时间:3/12/2018 访问量:6485
是否可以使用 javascript 捕获上下文菜单的“在新选项卡中打开”单击事件?
Is it possible to capture "Open in New Tab" clicked event of context menu using javascript?
答:
-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"');
}
});
});
评论
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 访问和控制。
浏览器旨在防止网页篡改或捕获敏感的用户交互,例如在新选项卡中打开链接。这种有意的设计旨在保护用户免受潜在恶意活动的侵害。
如果您的目标是在新选项卡中打开链接时执行特定操作,则可能需要探索替代方法。例如,向链接添加自定义点击处理程序有助于捕获点击事件,但它不会提供有关用户是否选择在上下文菜单中的新选项卡中打开链接的信息。
请务必记住,在未经用户明确同意的情况下试图操纵或干扰浏览器级交互可能会导致用户体验欠佳,并可能被视为侵入性。尊重用户隐私并遵守浏览器安全功能至关重要。
评论