我注意到有时 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>
浏览器比较(以 1/4 速度) 如您所见,在 IE 6-8 上大约需要单击两次按钮才能触发事件,而对于 9/firefox/chrome,事件每次都会触发.
这可能是什么原因?IE6 和 8 在装有 Windows XP 的虚拟机 (VirtualBox) 上进行了测试。
其他:
- “提交”和“按钮”的结果相同。
- 使用 'Onmouseup' 作为 onclick 的替代方法似乎可行。