使用Javascript取消鼠标中键滚动模式

时间:2015-05-13 10:59:57

标签: javascript browser scroll mouseevent dom-events

当我在浏览器中单击鼠标中键时,它会使用Scroll cursor之类的光标激活浏览器上的滚动模式。滚动模式取消 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++);
});

2 个答案:

答案 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;
}});