非常简单:
当用户按下箭头键时,是否可以防止浏览器滚动?
是的。使用类似: document.getElementById('yourID').onkeypress = HandleKeyPress;
function HandleKeyPress(e) {
var e = e || window.event;
switch (e.keyCode) {
case e.DOM_VK_LEFT:
case e.DOM_VK_RIGHT:
case e.DOM_VK_UP:
case e.DOM_VK_DOWN:
if (e.preventDefault)
e.preventDefault();
else e.returnValue = false;
}
}
尽管这样做可能不是一个好主意。请确保您没有忽略更好的方法。
非常直截了当:是的,但不要这样做。
改变浏览器运行方式的基本操作只会让用户感到困惑或愤怒,并使整个体验变得不那么友好。用户应该最终控制他或她的浏览器的运行方式,而不是您。这类似于阻止访问菜单项或删除上下文菜单等。
似乎很多人都说不要破坏浏览器的功能。
我会这么说,除非你用类似或更好的功能替换它。
我经常在溢出的元素中终止键盘滚动,因为我已经向使用键盘“向下”和“向上”键选择项目的元素添加了一个键盘事件(想想 finder 或 Windows 资源管理器窗口)。
默认滚动使交互变得很奇怪。如果选择了最上面的项目,则按下“向下”键,它将选择下一个项目,然后向下滚动元素并隐藏刚刚选择的内容。
所以我打破了默认滚动,然后添加我自己的滚动到所选项目,如果它低于(或高于)当前滚动视图。这样,在通过文件上下键时,它的行为与任何操作系统完全相同。
只是说,随心所欲地破坏它,但要确保你知道为什么要破坏它并且用户不会注意到任何事情。
在 jQuery 中你可以这样做:
$().keydown(function(e) { return e.keyCode != 38 && e.keyCode != 40; });
可能,但打破每个人都知道和理解的约定通常不是一个好主意:D
监听 keydown 事件并防止默认行为。
在jQuery中
$(document).on('keydown.yournamespace', function(e) {e.preventDefault();});
在 JQuery 中
$("*").keypress(function(e){e.preventDefault(); return false;});