onKeyUp不触发ESC在IE中
onKeyUp not firing for ESC in IE
我有一个页面,当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下不工作。有什么办法可以解决这个问题吗?
提前感谢!
键事件不必被body捕获,但是文档或窗口可以跨浏览器工作。此外,keyCode返回keyup或down事件的正确值。
<!doctype html>
<html lang="en">
<head>
<meta charset= "utf-8">
<title>Small Page</title>
<html>
<head>
<script>
function keyUpExample(e){
e=e || window.event;
var who= e.target || e.srcElement;
alert(e.type+' caught at '+who.nodeName+ ': key #'+e.keyCode)
}
window.onload=function(){
document.onkeyup= keyUpExample;
document.body.onkeyup= keyUpExample;
}
</script>
</head>
<body>
Trying keyUp event: Press any key...
</body>
</html>
将event
作为参数传递给回调,并为IE检查window.event
。
<html>
<head>
<script>
function keyUpExample(e) {
e = e || window.event;
alert('on' + e.type + ' event fired by ' + '"' + e.srcElement.id + '" ' + ' ' + e.which)
}
</script>
</head>
<body id="myBody" onkeyup="keyUpExample()">
Trying keyUp event: Press any key...
</body>
</html>
演示 element.onkeyup
参考
你最好使用一个库来消除所有难看的跨浏览器不一致。jQuery, Prototype, YUI, Dojo, MooTools, RightJS…
允许使用jQuery吗?如果是这样,那么可以使用.keyup()来完成它。
使用jQuery也意味着你通常可以把跨浏览器的担忧留给别人。
try
function keyUpExample(e) {
var evt = e || event;
alert('on' + evt.type + ' event fired by ' + '"' + ((evt.srcElement)?evt.srcElement.id:evt.target.id) + '" ' + ' ' + ((evt.which)?evt.which:evt.keyCode))
}
这实际上很简单,一个原始的JavaScript解决方案可能看起来像这样
function callback(event) {
if (event.keyCode == 27) {
alert('Here you go!');
}
}
if (document.addEventListener) {
document.addEventListener('keydown', callback, false);
} else {
document.attachEvent('onkeydown', callback);
}
只需将其附加到document
上,不需要任何加载技巧。
另外,正如人们建议你的,检查RightJS
,它非常轻量级和友好,你将能够做那些事情:)
相关文章:
- 为什么这在IE中的工作方式与在Firefox中不同
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- jQuery blueimp文件上传:将N-1个文件上传到IE中的服务器
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 设置倒计时计时器,IE出现问题
- 仅在IE中,javascript中的时区名称不正确
- 在IE中加载Firebug Lite时出现问题
- 为什么我得到错误IE修剪方法是't支持
- IE中的CSS翻转动画:翻转的一面显示镜像内容
- 通过具有IE<11
- IE在将字符串转换为日期时从日期中删除4小时
- 列表样式在IE中未设置为none,但在IE中适用
- IE/Chrome中未定义的函数,但Firefox中没有
- Jquery Modal表单登录与AJAX-ASP经典上的IE 9
- window.opener.document在ie中不起作用
- IE中关于ZK和JavaScript集成的一些错误
- 为什么Telerik cdn在IE中不起作用
- 滚动在Chrome中有效,但在Firefox或IE中无效
- onKeyUp不触发ESC在IE中