【发布时间】:2013-05-12 16:53:54
【问题描述】:
我注意到有时 IE6/IE7/IE8 并不总是触发 onclick 事件(单击时来自按钮)。 在最后一次 onclick 事件被触发后似乎有几秒钟的宽限期。
我决定使用此代码测试此行为:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script type="text/javascript">
window.onload = function(){
document.getElementById('clicker').onclick = function(){
var i = 0
return function(){
i+= 1
this.value = i.toString()
}
}()
}
</script>
</head>
<body>
<input type="submit" value="click here" id="clicker"/>
</body>
</html>
Browser Comparison (at 1/4 speed) 如您所见,在 IE 6-8 上大约需要单击两次按钮才能触发事件,而对于 9/firefox/chrome,事件每次都会触发。
这可能是什么原因? IE6 和 8 在装有 Windows XP 的虚拟机(VirtualBox)上进行了测试。
其他:
- “提交”和“按钮”的结果相同。
- 使用“Onmouseup”替代 onclick 似乎可行。
【问题讨论】:
-
我不知道为什么,但也许您的文档类型可能是个问题?尝试使用 HTML5 文档类型:
-
IE 6 到 8 没有实现 HTML5 API
标签: javascript internet-explorer onclick