当我在浏览器中单击鼠标中键时,它会使用之类的光标激活浏览器上的滚动模式。滚动模式取消 Esc 键或下一次鼠标单击。我们在滚动模式下左/右键单击,鼠标事件以不同的顺序触发。 在IE中,中间按钮向上和下一个鼠标向下和向上不会触发。 在Chrome中,下一个鼠标注册事件未触发。 有没有办法通过javascript取消滚动模式? 有没有办法让所有事件按顺序被触发?
请参阅Fiddler
var mouseDowns = 0;
var mouseUps = 0;
$('body').on('mousedown', 'div', function () {
$('#logs').prepend('<br/>mousedown' + mouseDowns++);
});
$('body').on('mouseup', 'div', function () {
$('#logs').prepend('<br/>mouseup' + mouseUps++);
});
答案 0 :(得分:1)
收听mousedown
事件并在检测到鼠标中键时取消默认行为(older browsers可以通过e.which
属性使用different index鼠标中键):
document.addEventListener("mousedown", function(e) {
if (e.button === 1) e.preventDefault();
});
答案 1 :(得分:0)
注册鼠标滚轮事件如下
[element].attachEvent("onmousewheel", MouseWheelHandler); // IE 6,7,8
[element].addEventListener("mousewheel", MouseWheelHandler, false); // IE9, Chrome, Safari, Opera
[element].addEventListener("DOMMouseScroll", MouseWheelHandler, false); // Firefox
并在处理程序中返回false以取消标准行为。
单击鼠标中键,
$('body').on('mousedown', 'div', function () {
if(event.button==1) {
event.preventDefault();
return event.returnValue = false;
}});