非常简单:
当用户按箭头键时是否可以阻止浏览器滚动?
答案 0 :(得分:10)
是肯定的。 使用类似的东西: 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;
}
}
虽然这样做可能不是一个好主意。只要确保你没有忽视一个更好的方法。
答案 1 :(得分:7)
非常简单:是的,但不要这样做。
改变浏览器运行方式的基本操作只会让用户感到困惑或愤怒,并使整个体验不那么人性化。用户应该最终控制他或她的浏览器的运行方式,而不是你。这类似于阻止访问菜单项,或删除上下文菜单等。
答案 2 :(得分:2)
似乎很多人都说不要破坏浏览器的功能。
除非你用相似或更好的功能取代它,否则我会争论相同。
我经常在带有溢出的元素中杀死键盘滚动,因为我在元素中添加了一个键盘事件,其中使用键盘“向下”和“向上”键选择项目(想想查找程序或Windows资源管理器窗口)
默认滚动使交互完全失败。如果选择了顶部项目,则键入“向下”,它将选择下一个项目,然后向下滚动元素并隐藏刚刚选择的内容。
所以我打破默认滚动,然后添加我自己的滚动到所选项目,如果它在当前滚动视图的下方(或上方)。这样,当在文件中上下键入时,它的行为与任何操作系统完全相同。
只是说,打破你想要的一切,但要确保你知道为什么你要打破它并且用户没有注意到任何事情。
答案 3 :(得分:1)
在jQuery中你可以做到:
$().keydown(function(e) { return e.keyCode != 38 && e.keyCode != 40; });
答案 4 :(得分:0)
可能,但打破每个人都知道和理解的惯例通常不是一个好主意:D
答案 5 :(得分:0)
监听keydown事件并阻止默认行为。
在jquery中
$(document).on('keydown.yournamespace', function(e) {e.preventDefault();});
答案 6 :(得分:-2)
在JQuery中
$("*").keypress(function(e){e.preventDefault(); return false;});