0

ページがビューポートよりも大きく、マウスの中ボタンを押したときに Firefox がアクティブにする自動スクロール モードを防ぐ方法を尋ねる質問がたくさんあることは知っています。

しかし、実際に必要なのはmouseup、自動スクロールがアクティブなときにイベントを検出できることだけです。イベントが伝播していないように見えるため、マウス ボタンがいつ (さらに重要なのはどこで) 離されたのかわかりません。

自動スクロール モードがなくなり、マウスの使用が通常に戻ったことを検出することもできます。

遊ぶためのプランクを用意しました。起動したら、中クリックするとボックス内のテキストが更新されます。ボタンを押すと、ページにさらにコンテンツが追加されます。中クリックすると自動スクロールがアクティブになり、mouseupイベントは永久に失われます。

リンク

4

3 に答える 3

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();

});
于 2013-07-16T15:26:27.520 に答える
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/

お役に立てれば。!!!

于 2013-07-16T15:26:43.353 に答える
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");
    });

ソリューションでプランク

于 2013-07-16T15:54:12.750 に答える