Javascript 自己处理链接上的点击-JQuery Mousedown

Javascript 自己处理链接上的点击-JQuery Mousedown,javascript,jquery,hyperlink,click,mousedown,Javascript,Jquery,Hyperlink,Click,Mousedown,我想自己处理特定元素上的点击。 因此,如果我用鼠标左键单击它,它会在当前选项卡中打开链接,如果我用鼠标中键单击它,它会在新选项卡中打开链接。 我想通过从链接中获取href属性并使用window.open()来实现这一点 这是否可能在不遇到PopupLocker问题的情况下实现 因此,首先,我试图阻止链接的开放 HTML: <a href="somelink.php" class="prev_cl"><img src="someimg.png" /></a>

我想自己处理特定元素上的点击。 因此,如果我用鼠标左键单击它,它会在当前选项卡中打开链接,如果我用鼠标中键单击它,它会在新选项卡中打开链接。 我想通过从链接中获取href属性并使用window.open()来实现这一点

这是否可能在不遇到PopupLocker问题的情况下实现

因此,首先,我试图阻止链接的开放

HTML:

<a href="somelink.php" class="prev_cl"><img src="someimg.png" /></a>
但即使这不起作用,它仍然会打开链接。 如果我在“return false”之前放置一个警报,它实际上不会触发单击并显示警报框。但是,谁希望每次单击链接时都有一个警报框呢

我还尝试使用mouseup和mousedown事件,但这也不起作用

我尝试的另一件事是将返回值设置为false,即:

 <a href="somelink.php" onclick="return false" class="prev_cl"><img src="someimg.png" /></a>

然后在javascript部分,我添加了window.open()


但是1)使用鼠标中键单击仍然有效,2)Firefox会阻止窗口的打开,因为它认为这是一个弹出窗口

将处理程序放在
单击
事件上,而不是
鼠标向下
$(函数(){
$('.prev_cl')。在({
“单击”:函数(e){
如果(e.which==1){
var button=“左”;
}否则{
按钮=“中间”;
}
console.log(按钮+单击);
console.log(e.which);
e、 预防默认值();
},
“上下文菜单”:函数(e){
console.log(“右键单击”);
console.log(e.which);
e、 预防默认值();
}
});
});

事件。jQuery的preventDefault()
可用于阻止事件的默认操作,在这种情况下,单击


此外,您还可以捕获鼠标中键(或任意键),如下所示:

即使这样做可行,我也需要区分(或者最好)左键单击和中键单击。如果“单击”不可能,或者我错了?您可以使用
contextmenu
事件来处理右键单击。我还在研究中键。我没有带中键的鼠标,所以我不确定我的答案是否真的有效。如果
单击
没有触发中间按钮,则可能需要使用
鼠标向下
捕捉中间按钮。这是我的第一个问题,鼠标下键时返回false或preventdefault()不起作用。当你点击某个东西时,会触发多个事件:
mousedown
mouseup
对于任何点击,
click
对于左键点击,
contextmenu
对于右键单击,我不确定中键单击是什么。跟随链接或显示菜单来自
单击
上下文菜单
事件,因此您需要处理这些事件并防止它们的默认值被覆盖。如果不起作用,我将它放在mousedown和mouseup上,并尝试“click”也
返回false
执行与调用
事件相同的操作。preventDefault()
。我知道如何检测鼠标按下时的鼠标中键,但我仍然需要防止默认操作,这是我的主要问题,对吗now@Harshadewa使用中间按钮时仍会激发。否,不会。我现在添加了2个链接;一个有默认值,一个没有默认值。
 <a href="somelink.php" onclick="return false" class="prev_cl"><img src="someimg.png" /></a>