<html>
<script>   var u=0;</script>
<script defer>   u=1;alert("defer1:"+u)</script>
<script defer>   u=2;alert("defer2:"+u)</script>
<script>  window.onload = function (){
alert("window.onload:"+u)
}
</script><body>
&nbsp;
</body>
</html>
我执行的结果是:FF和chrome顺序相同都是defer1->defer2->window.onload window.onload输出u是2
IE8:defer顺序不确定,window.onload 最后,u的值总是2.本人菜鸟,请大家分析一下,新人分数少,请见谅。

解决方案 »

  1.   

    IE8可能在加载<script defer>块的时候,并没有按照在页面中的先后顺序加载
      

  2.   

    原先以为defer是后进先出的,多刷了几次发现没顺序,不过这个还没关系。
    其实主要问题是defer顺序不管如何,为什么最后onload的时候u的值都是2!
      

  3.   


    defer不要用他就这么简单其他不说 不用他你就没办法控制你的js加载顺序了吗?
      

  4.   

    to:KK3K2005  谢谢!其实我也不提倡使用,浏览器不兼容,而且顺序不确定,控制js加载顺序确实有很多办法。
    这个问题是无意间看到http://topic.csdn.net/t/20060419/13/4697838.html#r_achor,然后自己试验发现的。
    只是很奇怪为什么defer不论顺序如何(多刷几次浏览器发现顺序不同),u的值总是2.