【发布时间】:2012-07-09 09:27:15
【问题描述】:
我正在尝试找到一种方法来禁用鼠标滚轮按钮的默认操作,即在新选项卡中打开链接。
这可能吗?
【问题讨论】:
-
又是一个不尊重标准鼠标事件的人-.-' howtogeek.com/howto/internet/… 和 pcworld.com/article/185288/…
标签: javascript jquery mousewheel
我正在尝试找到一种方法来禁用鼠标滚轮按钮的默认操作,即在新选项卡中打开链接。
这可能吗?
【问题讨论】:
标签: javascript jquery mousewheel
Bind a generic click event handler that specifically checks for middle clicks。在该事件处理程序中,调用 e.preventDefault():
$("#foo").on('click', function(e) {
if( e.which == 2 ) {
e.preventDefault();
}
});
请注意,并非所有浏览器都支持阻止此默认操作。对我来说,它只适用于 Chrome。 Firefox、Opera 和 IE9 都不会通过鼠标中键单击引发 click 事件。它们确实会引发 mouseup 和 mousedown。
【讨论】:
"click" 甚至不会触发中间/鼠标滚轮按钮。
"click" 不会因为在 Windows 7 NVM 中单击鼠标右键而触发。
这对我有用...
$(document).on("mousedown", "selector", function (ev) {
if (ev.which == 2) {
ev.preventDefault();
alert("middle button");
return false;
}
});
【讨论】:
使用 JAVASCRIPT 禁用鼠标滚轮事件:
在 IE 中:
document.attachEvent('onmousewheel', function(e){
if (!e) var e = window.event;
e.returnValue = false;
e.cancelBubble = true;
return false;
}, false);
在 Safari 中:
document.addEventListener('mousewheel', function(e){
e.stopPropagation();
e.preventDefault();
e.cancelBubble = false;
return false;
}, false);
在Opera中:
document.attachEvent('mousewheel', function(e){
if (!e) var e = window.event;
e.returnValue = false;
e.cancelBubble = true;
return false;
}, false);
在 Firefox 中:
document.addEventListener('DOMMouseScroll', function(e){
e.stopPropagation();
e.preventDefault();
e.cancelBubble = false;
return false;
}, false);
【讨论】:
我的代码:
$(document).on('auxclick', 'a', function(e) {
if (e.which === 2) { //middle Click
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
return false;
}
return true;
【讨论】: