jQuery快捷键在IE上无法正常工作

3

你好,我正在使用jQuery.hotkeys.js插件来设置键盘快捷键。所有其他的快捷键都能正常工作,但在IE中f1并不能按照预期工作。

在按下'f1'键时,它会绑定快捷键,但会被调用多次,并且还会打开帮助窗口。

代码如下:

 $(document).bind('keydown', 'f1', function (evt) {
        evt.preventDefault();
        evt.stopPropagation();
        alert('some message');
         window.event.keyCode = 0;
        return false;
}); 

请为我提供这个想法的建议。
谢谢
Munish
2个回答

3

在Internet Explorer中,F1键无法从keydown处理程序中取消。相反,您可以附加到onhelp事件:

window.onhelp = function () {
    return false;
} 

触发两次的问题可能是插件代码中的一个bug,如果它仅在Internet Explorer中发生,您可以通过专门使用onhelp事件来解决它:

if ("onhelp" in window) // IE
    window.onhelp = function() {
        alert("some message");
        return false;
    }
else // Others
    $(document).bind('keydown', 'f1', function(evt) {
        alert('some message');
        return false;
    });

谢谢,它起作用了,但是绑定函数被调用了多次。 - munish
@munish:尝试在Internet Explorer中专门使用onhelp函数,参见我的更新答案。 - Andy E

1
首先,你为什么想要覆盖F1?这是一个广为人知的约定,它将启动桌面应用程序的帮助(而不是你的Web应用程序)。
可能没有什么办法可以解决这个问题,特别是因为你使用了preventDefault()stopPropagation()return false

我想在按下“F1”键时显示自己的帮助信息,在FireFox中已经可以正常工作,所以我也希望在IE中实现相同的功能。请给我一些实现的思路。 - munish
据我所知,Firefox 是唯一允许在 JavaScript 中覆盖其快捷键(CTRL+R 等)的浏览器。 - Luper Rouch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接