onKeyUp 在 IE 中不会触发 ESC
我有一个页面,按下 Esc 时必须关闭对话框。我为此任务编写了以下简化代码示例:
<html>
<head>
<script language="JavaScript">
function keyUpExample() {
alert('on' + event.type + ' event fired by ' + '"' + event.srcElement.id + '" ' + ' ' + event.which)
}
</script>
</head>
<body id="myBody" onkeyup="keyUpExample()">
Trying keyUp event: Press any key...
</body>
</html>
这在 Chrome 下按预期工作,但在 IE 7 下不起作用。是否有任何解决方法可以解决此问题?
提前致谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
按键事件不必被正文捕获,但文档或窗口可以跨浏览器工作。此外,keyCode 会为 keyup 或 down 事件返回正确的值。
Key events don't have to be caught by the body, but document or window works across browsers. Also, keyCode returns the correct value for keyup or down events.
将
event
作为参数传递给回调,并检查 IE 的window.event
。演示
element.onkeyup
参考但是,
您最好使用一个可以消除所有丑陋的跨浏览器不一致的库。任您选择:jQuery、Prototype、YUI、Dojo、MooTools、RightJS...
Pass
event
as an argument to the callback, and check forwindow.event
for IE.Demo
element.onkeyup
referenceHowever
You're better off using a library which smooths out all the ugly cross-browser inconsistencies. Take your pick: jQuery, Prototype, YUI, Dojo, MooTools, RightJS...
你可以使用 jQuery 吗?如果是这样,那么您可以使用 .keyup() 来完成它。
使用 jQuery 还意味着您通常可以将跨浏览器的担忧留给其他人。
Are you allowed to use jQuery? If so, then you can accomplish it with .keyup().
Using jQuery also means you can generally leave the cross-browser worries to somebody else.
尝试
try
它实际上非常简单,原始 JavaScript 解决方案可能看起来有点像这样,
只需将其附加到
document
即可,无需任何 onload 技巧。另外,正如人们建议的那样,请检查
RightJS
,它非常轻量且友好,您将能够执行类似的操作:)http://rightjs.org/plugins/keys
It is actually very simple, a raw JavaScript solution could look kinda like this
Just attach it to the
document
no need for any onload trickery.Also, as people suggested you, check
RightJS
, it's very lightweight and friendly, and you will be able to do things like those :)http://rightjs.org/plugins/keys