async和DOM Script文件加载比较


Posted in PHP onJuly 20, 2014

目前我用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 相关文章推荐
一个用php3编写的简单计数器
Oct 09 PHP
PHP 字符串操作入门教程
Dec 06 PHP
Ajax PHP分页演示
Jan 02 PHP
php array_slice函数的使用以及参数详解
Aug 30 PHP
PHP 获取远程文件内容的函数代码
Mar 24 PHP
PHP统计二维数组元素个数的方法
Nov 12 PHP
使用PHP强制下载PDF文件示例
Jan 17 PHP
ThinkPHP3.2.2的插件控制器功能简述
Jul 09 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
Aug 21 PHP
php将字符串转换成16进制的方法
Mar 17 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
laravel通用化的CURD的实现
Dec 13 PHP
Eclipse的PHP插件PHPEclipse安装和使用
Jul 20 #PHP
php多任务程序实例解析
Jul 19 #PHP
php实现斐波那契数列的简单写法
Jul 19 #PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
Jul 19 #PHP
完善CodeIgniter在IDE中代码提示功能的方法
Jul 19 #PHP
CodeIgniter中实现泛域名解析
Jul 19 #PHP
php实现建立多层级目录的方法
Jul 19 #PHP
You might like
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
phpExcel导出大量数据出现内存溢出错误的解决方法
2013/02/28 PHP
PHP实现显示照片exif信息的方法
2014/07/11 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
js常用函数 不错
2006/09/08 Javascript
16个最流行的JavaScript框架[推荐]
2011/05/29 Javascript
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
JS生成不重复的随机数组的简单实例
2016/07/10 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
用js编写留言板
2020/03/17 Javascript
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
python处理大数字的方法
2015/05/27 Python
Python内置模块logging用法实例分析
2018/02/12 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
python利用百度AI实现文字识别功能
2018/11/27 Python
python中实现控制小数点位数的方法
2019/01/24 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
Python实现随机爬山算法
2021/01/29 Python
Waterford英国官方网站:世界上最受欢迎的优质水晶品牌
2019/08/17 全球购物
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
企业申诉管理制度
2014/01/30 职场文书
党校培训自我鉴定
2014/02/01 职场文书
民主生活会汇报材料
2014/12/15 职场文书
商务宴会祝酒词
2015/08/11 职场文书
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL