24

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

Disabling middle click scrolling with javascriptを見たことがありますが、解決策は私が望むよりも少しハッキーであり、実際に使用できるものとは思えません。

私はもっ​​と決定的な「これがあなたのやり方です」または「あなたはそれをすることはできません、息子」を探しています.

もちろん、私はハッキングや回避策を受け入れます。

SO の質問はコードで見栄えがよくなるという理由だけで、右クリックまたは中クリック時にツールチップを閉じるために使用しているものを次に示します。

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:

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

4

6 に答える 6

30

使用する:

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

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

于 2011-02-27T23:40:07.660 に答える
2

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

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

document.body.onmousedown = function(e) { if (e.button === 1) return false; }
于 2015-05-24T12:21:49.453 に答える
0

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

于 2011-04-17T06:21:14.890 に答える
-1
document.body.style.overflow=allowScroll?"":"hidden";
于 2011-02-28T12:18:14.710 に答える
-4

スクロールを完全に停止したい場合は、次のコードが必要です。

window.onscroll = function() {
    document.body.scrollTop = 0;
}

これにより、中央ボタンも効果的に無効になります..

于 2011-02-28T12:08:43.410 に答える