Firefox自动滚动时捕获鼠标滚轮的事件

时间:2013-07-16 15:19:48

标签: javascript jquery firefox javascript-events mouseevent

我知道有很多问题要求如何防止Firefox在页面大于视口并且按下鼠标中键时激活的自动滚动模式。

但我真正需要的是能够在自动滚动激活时检测mouseup事件。事件似乎没有传播,所以我不知道什么时候(更重要的是)鼠标按钮被释放。

我还可以选择检测自动滚动模式何时消失并且鼠标使用率恢复正常。

我准备了一个Plunk来玩。当它启动时,在任何地方中间单击,框中的文本将更新。如果按下按钮,则会向页面添加更多内容:中间单击将激活自动滚动,鼠标事件将永久丢失。

Link

3 个答案:

答案 0 :(得分:1)

这会产生结果吗?

$(selector).live('mouseup', function(e) { 

    if(e.which == 1) {

        alert("left");

    }if(e.which == 3) {

        alert("right button");

    }else if(e.which == 2) {

        alert("middle button"); 

    }

    e.preventDefault();

});

答案 1 :(得分:1)

 $(document).ready(function(){

$("your id").on('mousedown', function(e) { 
   if( (e.which == 1) ) {
     alert("left button");
   } else if( (e.which == 3) ) {
     alert("right button");
   } else if( (e.which == 2) ) {
      alert("middle button"); 
   }
   e.preventDefault();
}).on('contextmenu', function(e){
   e.preventDefault();
});
});

http://jsfiddle.net/p49nF/

希望,这有帮助。!!!

答案 2 :(得分:0)

知道了。

即使是'彼得的答案也不正确,它给了我正确的想法。

出于某种原因,如果preventDefault()处理程序中mousedown,则mouseup处于开始工作状态。

$(document)
  .on("mousedown", function(e) {
      if (e.which !== 2) return;
      $("#h").text("MouseDown");
      e.preventDefault();
    }).on("mouseup", function(e) {
      if (e.which !== 2) return;
      $("#h").text("MouseUp");
    });

Plunk with the solution