我在我构建的网站上有以下 jQuery 代码:
$(document).ready(function() {
// Other Bindings/Initializations Removed
// Hotkey Event Handler to 'doSomething'
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
$(document).keypress("a",function(e) {
if(e.altKey) { // Doesn't work
doSomething();
}
});
// Hotkey Event Handler to 'doSomething'
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
$(document).keypress("a",function(e) {
if(e.shiftKey) { //Works as Expected?
doSomething();
}
});
});
代码捕获按键组合事件(在本例中为“Alt-A”),然后继续调用执行适当操作的函数。我在 FireFox 中测试了此功能,并且该函数按预期被调用。当我在 Chrome 中测试该功能时,该功能没有被调用,而是发出了令人讨厌的错误提示音。我认为也许“Alt-A”与一个重要的浏览器热键组合发生冲突,因此将“A”更改为“N”,“G”,然后“K”;每次未调用该函数并发出错误提示音时。然而,当我创建 Shift-A/N/G/K 热键组合时,Chrome 按预期调用了该函数。
为什么 Chrome 对“Alt”键的处理方式不同?
如何为我的网站定义热键,以便它可以在 Chrome 中使用“Alt”键运行?
最佳答案
这适用于 Chrome 和 Firefox,但在 IE 中 Alt+a 打开收藏夹菜单。我不确定您将如何覆盖它。
HTML:
<a accesskey="a">
Javascript:
$(document).ready(function() {
// Other Bindings/Initializations Removed
// Hotkey Event Handler to 'doSomething'
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
$(document).keypress("a", function(e) {
if (e.shiftKey) { //Works as Expected?
alert("shift a");
}
if (e.altKey) {
alt_a_function();
}
});
$(document).on("click", "[accesskey=a]", function() {
alt_a_function();
});
});
function alt_a_function() {
alert("alt a");
}
关于javascript - 在 Chrome 浏览器中管理 JavaScript 热键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13655493/