日期:2014-05-16  浏览次数:20343 次

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>
?

如果运行在FF下面,像我们期望的那样,在页面载入后,不会立即alert的,但是,在IE7中,页面载入后立即就是一个alert。 显然onfocus事件的绑定被提前做了,不知道为什么。
可恶的IE7!!!

?

感觉像是onfocus提前执行了,如果将onfocus放在闭包中执行,由于要使用作用域链,就不会出现提前的情况了,谁能解释一下IE这么做的原因?