async和DOM Script文件加载比较
程序员文章站
2023-11-11 23:11:40
目前我用demo.js作为执行文件操作.代码:
var now = function() { return +(new date()); }
var t_s =...
目前我用demo.js作为执行文件操作.代码:
var now = function() { return +(new date()); } var t_s = now(); while(now() - t_s < 2000) { }
用sleep.php作为请求文件操作。代码:
<?php sleep(3); echo 'var bb'; ?>
1. 一般script标签加载
<script src="demo.js"></script> <script src="sleep.php"></script>
在浏览器加载情况: 图1-1. 下载阻塞domready 图1-2. 执行阻塞domready
图1-1. 下载阻塞domready
图1-2. 执行阻塞domready
2. async属性
async是html5中新增的属性,它的作用是能够异步下载脚本文件,不阻塞domready。
每一个async属性的脚本都在它下载结束之后立刻执行,同时会在window的load事件之前执行。所以就有可能出现脚本执行顺序被打乱的情况
支持async浏览器: firefox 3.6+, ie 10+, chrome 2+, safari 5+, ios 5+, android 3+
<script src="demo.js" async></script> <script src="sleep.php" async></script>
在浏览器中加载的情况:
图2-1 异步下载 不阻塞domready 阻塞load事件
图2-2 执行阻塞load事件
图2-3 ie9不支持async属性下载阻塞domready
3. dom script动态加载
文档对象模型(dom)允许您使用 javascript 动态创建 html 的几乎全部文档内容。 script元素与页面其他元素一样,可以非常容易地通过标准 dom 函数创建:
var loadscript = function(url) { var s = document.createelement('script'); s.type = 'text/javascript'; s.async = 'true'; s.src = url; document.getelementsbytagname('head')[0].appendchild(s); } // 加载js文件脚本 loadscript('sleep.php'); loadscript('demo.js');
在浏览器中加载的情况:
图3-1 下载阻塞load事件
图3-2 执行阻塞load事件
图3-3 ie9不阻塞load事件
小结
async和script动态加载在现代浏览器中加载的情况是一致的。前者使用简单,后在兼容性方面更好。 异步加载文件还有很多方法,ajax(会受到同源限制)、iframe、img…
推荐阅读
-
async和DOM Script文件加载比较
-
async和DOM Script文件加载比较
-
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
-
async和DOM Script文件加载比较_php技巧
-
async和DOM Script文件加载比较_php技巧
-
速战速决 5 - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间
-
async和DOM Script文件加载比较
-
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
-
async和DOM Script文件加载比较
-
速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 - webabcd