IE下javascript的执行顺序,谁能帮忙解释?
在phpor的博客上看到一篇文章:
?
http://phpor.net/blog/post/779/
?
有这么一段代码:
?
<input type="text" id="name" />
<input type="text" id="password" />
<script>
var $ = function (id) { return document.getElementById(id);};
$("name").focus();
$("name").blur();
$("name").onfocus = function () {alert('haha');}
</script>
?
<input type="text" id="name" /> <input type="text" id="password" /> <script> ??var $ = function (id) { return document.getElementById(id);}; ??$("name").focus(); ??$("name").blur(); ??$("name").onfocus = function () {alert('haha');} </script>
如果运行在FF下面,像我们期望的那样,在页面载入后,不会立即alert的,但是,在IE7中,页面载入后立即就是一个alert。 显然onfocus事件的绑定被提前做了,不知道为什么。
可恶的IE7!!!
?
感觉像是onfocus提前执行了,如果将onfocus放在闭包中执行,由于要使用作用域链,就不会出现提前的情况了,谁能解释一下IE这么做的原因?