2009-05-26 88 views

回答

7

非常简单:是的,但不这样做。

改变浏览器操作方式的基本操作只是让用户感到困惑或愤怒,并且使整个体验不太友好。用户应该对他或她的浏览器的功能有最终控制权,而不是你。这类似于阻止菜单项被访问或删除上下文菜单等。

0

可能,但它通常不是一个好主意,打破惯例,每个人都知道和了解:d

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

虽然这样做可能不是一个好主意。只要确保你不会忽视更好的方法。

+0

我喜欢jQuery的解决方案,我已经使用它..投票了 – Ropstah 2009-05-26 23:23:04

-2

jQuery中

$("*").keypress(function(e){e.preventDefault(); return false;}); 
+0

有人问“是否有可能避免文档时滚动箭头键jQuery中按下?” ? – TheHippo 2009-05-26 13:47:50

+0

这不会让你按任何键!没有F5,没有输入字段,纳达! – peirix 2009-05-26 13:53:46

+0

我正在给用户一个如何去做的想法......而不是完整的解决方案。 – 2009-05-27 07:54:12

1

在jQuery的你可以这样做:

$().keydown(function(e) { return e.keyCode != 38 && e.keyCode != 40; }); 
2

看起来很多人说不打破浏览器的功能。

我会争辩相同的,除非你用相似或更好的功能替换它。

我经常杀死键盘滚动的元素溢出,因为我已经添加了键盘事件的元素,使用键盘“下”和“上”键选择项目(想到一个发现者或Windows资源管理器窗口)。

默认的滚动使所有的交互都变得糟糕。如果选择了最上面的项目,那么你键入'下',它会选择下一个项目,但然后向下滚动元素并隐藏刚刚选择的项目。

因此,我打破默认滚动,然后添加我自己滚动到选定的项目,如果它低于(或高于)当前滚动视图。这样,当通过文件键入和关闭时,其行为与任何操作系统完全相同。

只是说,打破你想要的一切,但要确保你知道你为什么打破它,用户不会注意到一件事。

0

收听keydown事件并防止默认行为。

jQuery中

$(document).on('keydown.yournamespace', function(e) {e.preventDefault();}); 
相关问题