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 相关文章推荐
PHP怎样调用MSSQL的存储过程
Oct 09 PHP
php字符串截取问题
Nov 28 PHP
php中文字母数字验证码实现代码
Apr 25 PHP
比较全的PHP 会话(session 时间设定)使用入门代码
Jun 05 PHP
php 遍历数据表数据并列表横向排列的代码
Sep 05 PHP
应用开发中涉及到的css和php笔记分享
Aug 02 PHP
UCenter 批量添加用户的php代码
Jul 17 PHP
解析php中memcache的应用
Jun 18 PHP
php生成过去100年下拉列表的方法
Jul 20 PHP
PHP微信开发用Cache 解决数据缓存
Jul 11 PHP
10个值得深思的PHP面试题
Nov 14 PHP
如何用RabbitMQ和Swoole实现一个异步任务系统
May 29 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中实现进程间通讯
2006/10/09 PHP
PHP XML备份Mysql数据库
2009/05/27 PHP
20个PHP常用类库小结
2011/09/11 PHP
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
JS 事件绑定函数代码
2010/04/28 Javascript
js 幻灯片的实现
2011/12/06 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
js获取客户端外网ip的简单实例
2013/11/21 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
Vue数据驱动模拟实现1
2017/01/11 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
ES6新增的math,Number方法
2017/08/06 Javascript
React如何避免重渲染
2018/04/10 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
ES6 Set结构的应用实例分析
2019/06/26 Javascript
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
python3编码问题汇总
2016/09/06 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
高二历史教学反思
2014/01/25 职场文书
新农村建设典型材料
2014/05/31 职场文书
就业意向书范本
2015/05/11 职场文书
Python实战之实现康威生命游戏
2021/04/26 Python
Python基础之元组与文件知识总结
2021/05/19 Python