Ответ 1
Использование:
$('body').mousedown(function(e){if(e.button==1)return false});
Это работает в Chrome: http://jsfiddle.net/PKpBN/3/
Я ищу способ остановить средний щелчок мыши, чтобы браузер запустил прокрутку и показывая маленький компас прокрутки.
Я видел Отключение прокрутки среднего клика с помощью 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:
Меня больше интересует предотвращение "компаса" маленького прокрутки, чем остановка прокрутки страницы. Я думаю, это было не очень ясно из моего первоначального описания.
Использование:
$('body').mousedown(function(e){if(e.button==1)return false});
Это работает в Chrome: http://jsfiddle.net/PKpBN/3/
Попробуйте использовать return false;
вместо e.preventScrolling();
Не нужно включать jQuery только для этого.
Если вы используете jQuery, здесь уже есть отличные ответы. Если нет, вы можете использовать vanilla JS:
document.body.onmousedown = function(e) { if (e.button === 1) return false; }
document.body.style.overflow=allowScroll?"":"hidden";
Если вы хотите полностью остановить прокрутку, вот требуемый код:
window.onscroll = function() {
document.body.scrollTop = 0;
}
Это также эффективно отключит среднюю кнопку.