以下代码显示了一个关于'?'的按键事件的div (191)。与谷歌浏览器完美配合,但拒绝使用Firefox。有什么想法吗?
$(document).keyup(function (e) {
if(e.which == 16) isShift=false; }).keydown(function (e) {
if(e.which == 16) isShift=true;
if(e.which == 191 && isShift == true) {
if ($('#keyboard-shortcut-menu').css('display') == 'none') {
$('#keyboard-shortcut-menu').show();
} else {
$('#keyboard-shortcut-menu').hide();
}
return false;
}
更新:想出这个。 Firefox捕获'?' char为0值。看看下面的答案。
答案 0 :(得分:2)
尝试
e.keyCode == XX
哦,您可以使用e.shiftKey
来测试是否按下了“shift”键
$(document).keypress(function(e){
if(e.keyCode==191 && e.shiftKey)
$('#keyboard-shortcut-menu').toggle();
return false;
});
答案 1 :(得分:1)
$(function(){
$(document).keyup(function (e) {
if(e.which == 16) isShift=false;
}).keydown(function (e) {
if(e.which == 16) isShift=true;
if(e.which == 191 && isShift == true) {
if ($('#keyboard-shortcut-menu').css('display') == 'none') {
$('#keyboard-shortcut-menu').show();
}
else {
$('#keyboard-shortcut-menu').hide();
}
return false;
}
});
});
在这里尝试js小提琴:http://jsfiddle.net/q3d6S/1/
答案 2 :(得分:0)
试试这个(demo):
$(document).keyup(function(e){
if (e.which == 191 && e.shiftKey == true) {
$('#keyboard-shortcut-menu').toggle();
}
});
答案 3 :(得分:0)
好的,我明白了。我在Firefox控制台上运行了这个脚本:
$(document).keydown(function(e) {
console.log(e.which);
});
似乎Firefox捕获了'?' char为值0,而Google Chrome将其捕获为191。
通过添加条件代码解决它:
if((e.which == 191 && isShift == true) || (e.which == 0 && isShift == true))
感谢所有重构提示。