async与defer的作用与区别以及阻塞优化

栏目: CSS · 发布时间: 5年前

内容简介:2.3.(2). defer 与相比普通 script,有两点区别:载入 JavaScript 文件时不阻塞 HTML 的解析,执行阶段被放到HTML标签解析完成之后;

2. <script async src="script.js"></script> (异步下载)会下载脚本,但是不会立即执行,并且不一定按照script顺序触发;这种方式加载的 JavaScript 依然会阻塞 load 事件。换句话说,async可能在 DOMContentLoaded 触发之前或之后执行,但一定会在 load 触发之前执行。

  • (1)HTML5属性;Chorme,FireFox,IE9+浏览器支持
  • (2)async属性仅适用于外部脚本
  • (3)执行顺序是不确定的
  • (4)async 属性表示 异步执行 引入的 JavaScript
  • (5)与 defer 的区别在于,如果已经加载好,就会开始执行,无论此刻是 HTML 解析阶段还是 DOMContentLoaded 触发之后

3. <script defer src="script.js"></script> (延迟执行)是否对脚本执行延迟,直到页面加载为止

(1). 兼容所有浏览器

(2). defer 与相比普通 script,有两点区别:载入 JavaScript 文件时不阻塞 HTML 的解析,执行阶段被放到HTML标签解析完成之后;

(3). 如果脚本不改变文档的内容,可以用defer属性,以便加快处理文档速度

(4).defer 属性表示延迟执行引入的 JavaScript,即这段 JavaScript 加载时HTML 并未停止解析,这两个过程是并行的

(5).defer 不会改变 script 中代码的执行顺序,整个 document 解析完毕且 defer-script 也加载完成之后(这两件事情的顺序无关),会执行所有由 defer-script 加载的JavaScript 代码,然后触发 DOMContentLoaded 事件。

(6)所有设置了defer属性的脚本按顺序执行,async是无顺序的加载

(7)无论设置了defer或async,该script会在onload前执行;

(8)IE/chrome在设置defer时,与firefox不同,前者会等脚本执行后才执行DOMContentLoaded;而后者会先于脚本执行

  • script脚本阻塞有什么解决方法?(script异步加载的四种方式)

(1)引入jquery

$(document).ready(function(){
内容

})
复制代码

(2)async属性

(3)defer属性

(4)动态创建 <script> 标签(兼容所有浏览器)

(function(){
	 var script =document.createElement('script');
	 script.type='text/javascript';
	 script.src="http://code.jquery.com/jquery-1.7.2.min.js";
	 var tmp=document.getElementsByTagName('script')[0],
	tem.parentNode.insertBefore(script,tmp);
 })
复制代码
  • css阻塞有什么解决方法?

css的加载并不会导致html解析和渲染的停止,但是会影响到js脚本的执行。因为js脚本不仅可以读取修改到dom,也可以读取修改到cssom。故在js脚本执前,browser必须保证到css文件完全加载并解析完成,即cssom树完全构建好。这就导致了js执行的延迟,也因此导致html解析和渲染延迟。(这就是css阻塞js执行,阻塞渲染的根本原因)

因此一些解决方法:

  • 1、在引入顺序上,css资源的引入要优于js脚本的引入
  • 2、对css进行精简并尽快提供
  • 3、可以用媒体类型(会加载不会阻塞)
  • 4、用媒体查询(会记载,只有在符合的设备上才会进行阻塞)

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构与抽象

数据结构与抽象

卡兰罗等著、严蔚敏等译 / 卡兰罗 / 清华大学出版社 / 2004-3 / 89.0

数据结构与抽象:Java语言版,ISBN:9787302093756,作者:Frank M.Carrano,Walter Savitch著;严蔚敏,袁昱,朱薇薇译;严蔚敏译一起来看看 《数据结构与抽象》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试