DA.*_*DA. 15 javascript jquery arrow-keys internet-explorer-8
我正在尝试设置一个可以通过箭头键导航的菜单.我在Firefox中有这个工作片.
试图让它在IE8中工作并经过一番努力后,发现这是因为IE8不会在箭头上注册一个按键.去测试:
$(document).keypress(function (eh){
alert(eh.keyCode);
};
Run Code Online (Sandbox Code Playgroud)
在Firefox中,按任意箭头键将触发37,38,39或40的警报.
在IE8中,什么都没有.标准QWERTY键盘上的任何其他键都会注册,但不会注册箭头键.
这是我的Javascript的问题吗?浏览器设置?Windows设置?
Bal*_*usC 38
从jQuery keypress文档(介绍性文本的最后一段):
请注意
keydown并keyup提供一个代码,指示按下哪个键,同时keypress指示输入了哪个字符.例如,小写"a"将被报告为65keydown和keyup,但是为97keypress.所有事件都将大写的"A"报告为97.由于这种区别,在捕捉箭头键等特殊击键时,.keydown()或者.keyup()是更好的选择.
它甚至字面上提到了箭头键;)因此,你真的需要挂钩keydown或keyup事件.下面是一个SSCCE用keydown,只是它copy'n'paste'n'run.不,您不需要对浏览器进行兼容检查event,这适用于从IE6到Firefox的所有浏览器.
<!doctype html>
<html lang="en">
<head>
<title>SO question 2217553</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(document).keydown(function(event) {
switch (event.keyCode) {
case 37: alert('left'); break;
case 38: alert('up'); break;
case 39: alert('right'); break;
case 40: alert('down'); break;
}
});
</script>
</head>
<body>
<p>Press one of the arrow keys.</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
试试这个:
$(document).keydown(function (e) {
if(!e) {
e = window.event;
}
switch(e.keyCode) {
case 37:
goLeft();
break;
case 39:
goRight();
break;
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20902 次 |
| 最近记录: |