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 相关文章推荐
Adodb的十个实例(清晰版)
Dec 31 PHP
用PHP实现维护文件代码
Jun 14 PHP
PHP中用hash实现的数组
Jul 17 PHP
PHP-Fcgi下PHP的执行时间设置方法
Aug 02 PHP
php调用google接口生成二维码示例
Apr 28 PHP
PHP常用的排序和查找算法
Aug 06 PHP
为你总结一些php信息函数
Oct 21 PHP
PHP错误Warning:mysql_query()解决方法
Oct 24 PHP
学习php设计模式 php实现访问者模式(Visitor)
Dec 07 PHP
理解php依赖注入和控制反转
May 11 PHP
PHP缩略图生成和图片水印制作
Jan 07 PHP
PHP实现的简单适配器模式示例
Jun 22 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
php 常用类整理
2009/12/23 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
初识Laravel
2014/10/30 PHP
php中的异常和错误浅析
2017/05/03 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
javascript 多级checkbox选择效果
2009/08/20 Javascript
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
js定时器的使用(实例讲解)
2014/01/06 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
JS实现的检验身份证格式并输出出生日期,年龄,性别,出生地示例
2019/05/17 Javascript
three.js 将图片马赛克化的示例代码
2020/07/31 Javascript
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
python 多线程应用介绍
2012/12/19 Python
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
python学习基础之循环import及import过程
2018/04/22 Python
python实现决策树ID3算法的示例代码
2018/05/30 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
Django restframework 源码分析之认证详解
2019/02/22 Python
python中嵌套函数的实操步骤
2019/02/27 Python
python dlib人脸识别代码实例
2019/04/04 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
美国婴儿用品店:Babies”R”Us
2017/10/12 全球购物
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
英国高街电视:High Street TV
2018/05/22 全球购物
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
实习生自荐信范文
2013/11/13 职场文书
《假如》教学反思
2014/04/17 职场文书
读书之星事迹材料
2014/05/12 职场文书
生日庆典策划方案
2014/06/02 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
2015双创工作总结
2015/07/24 职场文书