Запретить прокрутку средней мыши

Я ищу способ остановить средний щелчок мыши, чтобы браузер запустил прокрутку и показывая маленький компас прокрутки.

Я видел Отключение прокрутки среднего клика с помощью javascript, однако решение немного более хакерское, чем хотелось бы, и не похоже на то, что я мог бы реально использовать.

Я ищу более окончательное "Это то, как вы это делаете" или "Вы не можете этого сделать, сын".

Я, конечно, открываю хаки и обходные пути.

Просто потому, что С.О. вопросы выглядят лучше с кодом, вот что я использую, чтобы закрыть всплывающие подсказки при щелчке правой или средней кнопкой.

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

edit: jQuery, JavaScript, что угодно, пусть все играют сейчас красиво:)

Изменить 2:

Меня больше интересует предотвращение "компаса" маленького прокрутки, чем остановка прокрутки страницы. Я думаю, это было не очень ясно из моего первоначального описания.

Ответ 1

Использование:

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

Это работает в Chrome: http://jsfiddle.net/PKpBN/3/

Ответ 2

Попробуйте использовать return false; вместо e.preventScrolling();

Ответ 3

Не нужно включать jQuery только для этого.

Если вы используете jQuery, здесь уже есть отличные ответы. Если нет, вы можете использовать vanilla JS:

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

Ответ 4

document.body.style.overflow=allowScroll?"":"hidden";

Ответ 5

Если вы хотите полностью остановить прокрутку, вот требуемый код:

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

Это также эффективно отключит среднюю кнопку.