Web浏览器-重定向F1(不总是工作)

Web browser - redirecting F1 (doesn't work always)

本文关键字:工作 浏览器 重定向 F1 Web      更新时间:2023-09-26

我使用jQuery重定向F1-F10键在web浏览器(MFF或chrome):

$('*').live("keydown", function(e) {
  if (e.keyCode == 112) 
  {
    document.getElementById('form:f1').click();
    return false;
  }
});

因此,当我按下F1时,而不是浏览器自己的HELP, ID为form:f1的按钮被触发。可以正常工作,但有时不能

。我启动web应用程序(浏览器)10次,重定向工作正常,在第11次启动浏览器时,它突然不工作,我不得不重新启动浏览器。

所有其他javascriptjQuery函数总是工作,但重定向不工作。

难道你不知道问题出在哪里吗?

虽然很难看出确切的问题是什么,但所有行都存在问题或不良做法。

  • 没有必要将活动事件绑定到所有元素,而是做活动所做的,并利用事件冒泡。只绑定文档的keydown事件

  • 使用e.which检查按下的键,jQuery规范了事件对象,所以它适用于所有浏览器

  • 为了一致性,使用jQuery选择器代替document.getElementById

  • 尽量避免在id中使用特殊字符,在大多数编程语言中最好将它们视为标识符名称。使用form_f1代替form:f1

  • e.preventDefault()代替return false

还要确保当你按下F1时,焦点在文档的某个地方,即它不在地址栏或浏览器UI的任何其他按钮/元素上。

如果你在任何地方使用e.stopPropagation()的keydown事件,这将阻止事件冒泡DOM,回落到默认的热键功能。

下面的代码在FireFox 5和Google Chrome 12中一直为我工作。

$(document).keydown(function(e){
    if(e.which == 112){
        $('#form_f1').click();
        e.preventDefault();
    }
});
相关文章: