async和DOM Script文件加载比较

2015-01-24信息快讯网

async与script动态加载都能使文件异步加载,本文叙述它们对页面渲染和load加载的影响方面。

目前我用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

async和DOM Script文件加载比较_信息快讯网
图1-1. 下载阻塞DomReady

async和DOM Script文件加载比较_信息快讯网
图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>  

在浏览器中加载的情况:

async和DOM Script文件加载比较_信息快讯网
图2-1 异步下载 不阻塞DomReady 阻塞load事件

async和DOM Script文件加载比较_信息快讯网
图2-2 执行阻塞load事件

async和DOM Script文件加载比较_信息快讯网
图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');

在浏览器中加载的情况:

async和DOM Script文件加载比较_信息快讯网
图3-1 下载阻塞load事件

async和DOM Script文件加载比较_信息快讯网
图3-2 执行阻塞load事件

async和DOM Script文件加载比较_信息快讯网
图3-3 IE9不阻塞load事件

小结

async和script动态加载在现代浏览器中加载的情况是一致的。前者使用简单,后在兼容性方面更好。 异步加载文件还有很多方法,ajax(会受到同源限制)、iFrame、img…

php中adodbzip类实例
Yii的CDbCriteria查询条件用法实例
Yii中CGridView关联表搜索排序方法实例详解
Yii把CGridView文本框换成下拉框的方法
php中print(),print_r(),echo()的区别详解
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
ThinkPHP控制器里javascript代码不能执行的解决方法
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
PDO预处理语句PDOStatement对象使用总结
PHP图像处理之imagecreate、imagedestroy函数介绍
javascript some()函数用法详解
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
php基于mcrypt的加密解密实例
Windows下的PHP安装pear教程
PHP中使用Session配合Javascript实现文件上传进度条功能
Javascript与PHP验证用户输入URL地址是否正确
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Eclipse的PHP插件PHPEclipse安装和使用
linux下使用crontab实现定时PHP计划任务失败的原因分析
PHP关于htmlspecialchars、strip_tags、addslashes的解释
windows7下安装php的php-ssh2扩展教程
windows7下安装php的imagick和imagemagick扩展教程
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
PHP和javascript常用正则表达式及用法实例
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
JavaScript创建命名空间的5种写法
PHP获取windows登录用户名的方法
destoon之URL Rewrite(伪静态)设置方法详解
destoon利用Rewrite规则设置网站安全
PHP中的多行字符串传递给JavaScript的两种方法
Thinkphp中Create方法深入探究
PHP+javascript制作带提示的验证码源码分享
PHP动态生成javascript文件的2个例子
©2014-2024 dbsqp.com