锁定老帖子 主题:关于对defer的理解.
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-11-07
defer作用是文档加载完毕了再执行脚本内容. 我也一直是这样认为的。所以有的时候在提高性能上会去考虑它.比如有时可以在整个文档加载完后再去执行它. 但请大家看一下这样的一个例子,大家说一下它的执行顺序是什么样子的呢. <body> <script defer> alert(1); </script> <script> alert(2); </script> <script> alert(3); </script> </body> 运行之后就会觉得很怪了。但我一直找不到原因,我不知道是不是我对defer的理解有问题. 所以要请各位. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-11-07
查了一下MSDN的DHTML Reference不就知道了?
这是一个符合w3c标准的属性,所以解释是通用的。 http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/defer.asp defer,我的理解是,等下载完所有的页面后再执行。 结果我试了一下楼主的代码,结果真不是这样,就是有没有defer,都按出现的顺序执行! 在ff上一样。 我修改了一下代码: <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD> <BODY> <script defer=true> alert(1); </script> 111 <script> alert(2); </script> 222 <script> alert(3); </script> 333 </BODY> </HTML> 在FF上执行跟以前一样,但在IE上执行结果很有趣: 111在alert(1)之前出现,说明了defer起了一点用,让alert(1)在11后被执行;而alert(2)在222出现前执行的,333同样。 |
|
返回顶楼 | |
发表时间:2006-11-07
to Lucas Lee:
更怪的是 你直接把这一段拷贝过去执行看看? 记住,不要<body>标签 <script> <script defer = true> alert(1); </script> <script> alert(2); </script> <script> alert(3); </script> 它的顺序又变成正常了。但是前提是你要删掉body标签. |
|
返回顶楼 | |
发表时间:2006-11-07
fang9159 写道 to Lucas Lee:
更怪的是 你直接把这一段拷贝过去执行看看? 记住,不要<body>标签 <script> <script defer = true> alert(1); </script> <script> alert(2); </script> <script> alert(3); </script> 它的顺序又变成正常了。但是前提是你要删掉body标签. 我试验了,将<script>放在<body>之外可以得到期望的顺序。 |
|
返回顶楼 | |
发表时间:2006-11-07
要注意是基于什么标准:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> </HEAD> <BODY> <script defer = true> alert(1); </script> <script> alert(2); </script> <script> alert(3); </script> </BODY> </HTML> |
|
返回顶楼 | |
发表时间:2006-11-07
liuyxit 写道 要注意是基于什么标准:
我调试过,不过它执行的顺序仍然有问题.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> </HEAD> <BODY> <script defer = true> alert(1); </script> <script> alert(2); </script> <script> alert(3); </script> </BODY> </HTML> |
|
返回顶楼 | |
发表时间:2006-11-07
其实这跟使用什么样的浏览器有关系的,我用Firefox都没这样的效果
|
|
返回顶楼 | |
发表时间:2006-11-08
该代码如果在本地执行 和 部署到远程服务器再打开后再执行 的顺序也不同。。。
我的机器是win2k 应用程序服务器是tomcat |
|
返回顶楼 | |
发表时间:2006-11-09
所以还是少用这个为好.
平时写程序的时候注意顺序也没什么问题. |
|
返回顶楼 | |
发表时间:2007-03-12
希望zkj_beyond之js大拿能出来给点说发~~~
|
|
返回顶楼 | |