web-dev-qa-db-ja.com

マウスの中クリックによるスクロールを防止する

マウスの中クリックでブラウザがスクロールを開始し、小さなスクロール「コンパス」が表示されないようにする方法を探しています。

私は見たことがあります javascriptでミドルクリックスクロールを無効にする しかし、解決策は私が望むよりも少しハッキーであり、私が実際に使用できるもののようには見えません。

もっと明確な「これがあなたのやり方です」または「あなたはそれができない、息子」を探しています。

もちろん、私はハックや回避策を受け入れています。

S.O.質問はコードを使用すると見栄えが良くなります。これは、右クリックまたは中クリック時にツールチップを閉じるために使用しているものです。

msg.mousedown(function(e) {
    if (e.which == 2) {   //middle mouse click
        msg.hide();
        e.preventScrolling();   //if only this worked...
    }
    else if (e.which == 3) {   //right mouse click
        msg.hide();
    }
}).bind('contextmenu', function(e) {
    e.preventDefault();
}).click(function(e) {
    e.stopPropagation();
});

編集:jQuery、JavaScript、何でも、今すぐすべてうまくプレイしましょう:)

編集2:

私は、ページのスクロールを停止するよりも、小さなスクロール「コンパス」を防ぐことに興味があります。私の最初の説明からは、それはあまり明確ではなかったと思います。

22
elwyn

使用する:

$('body').mousedown(function(e){if(e.button==1)return false});

これはChromeで機能します: http://jsfiddle.net/PKpBN/3/

29
pimvdb

このためだけにjQueryを含める必要はありません。

JQueryを使用している場合、ここにはすでにいくつかの優れた回答があります。そうでない場合は、VanillaJSを使用できます。

document.body.onmousedown = function(e) { if (e.button === 1) return false; }
1
rnevius

e.preventScrolling();の代わりにreturn false;を使用してみてください

0
Chris McFarland