我正在用jquery创建命名空间事件。当我使用以下函数和code = 112,函数bool = false时,一切都在FF中工作正常,F1键提交到我的函数,事件没有冒出来在新选项卡中打开firefox帮助。
function bindKeyFunc(code, func, bool){
$(document).bind('keypress.' + code, function(e){
var c = (e.keyCode ? e.keyCode : e.which);
//console.log(c);
if ( code == c) {
//e.stopPropagation();
//e.preventDefault();
func();
return bool;
}
});
}
在chrome和ie8中,我的事件监听器不会触发,而是会发生常规帮助,即使我取消注释stopPropagation和preventDefault调用。
同样,当我尝试接管<tab>
密钥用于我自己的目的时,它在FF中运行得非常好,但我的事件不会在chrome或ie8中触发,而标签的默认操作则会触发:< / p>
$('input#manual-total').bind('keypress.dep', function(e) {
var code = (e.keyCode ? e.keyCode : e.which);
if ( code==9 ){
$('div#formset').show();
$(next).focus()[0].select();
return false;
}
});
答案 0 :(得分:2)
document.addEventListener
上的普通keydown
在Chrome上为我工作。
var util = { };
document.addEventListener('keydown', function(e){
var key = util.key[e.which];
if( key ){
e.preventDefault();
}
if( key === 'F1' ){
// do stuff
}
})
util.key = {
9: "tab",
13: "enter",
16: "shift",
18: "alt",
27: "esc",
33: "rePag",
34: "avPag",
35: "end",
36: "home",
37: "left",
38: "up",
39: "right",
40: "down",
112: "F1",
113: "F2",
114: "F3",
115: "F4",
116: "F5",
117: "F6",
118: "F7",
119: "F8",
120: "F9",
121: "F10",
122: "F11",
123: "F12"
}
答案 1 :(得分:1)
您无法使用F1-F12键浏览器。试试这个演示。 http://jshotkeys.googlepages.com/test-static-01.html
答案 2 :(得分:1)
请阅读链接文章,特别是偶尔发出的警告“当我发现我决定不通过进行进一步的标点字符实验来冒险我的理智时。”等等。 :)
答案 3 :(得分:0)
使用keydown代替keyup和preventDefault,因为如果你使用keyup chome已经触发了帮助页面,则chrome使用keydown。
if (e.key === "F1") {
e.preventDefault();
//Do Code Here
};