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

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

内容简介: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、用媒体查询(会记载,只有在符合的设备上才会进行阻塞)

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

查看所有标签

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

100个可操作的网络赚钱方法

100个可操作的网络赚钱方法

陶秋丰 / 云南科技 / 2009-12 / 29.80元

《100个可操作的网络赚钱方法》专为有志于网上创业的读者量身打造,作者是“实战型”的网赚高手,在17岁时就通过互联网创业“年人10万”,如今结合自身的亲身实战经验,与大家分享可以实实在在盈利的100个网络赚钱方法和技巧。内容包括:网站创建与推广、竞价广告、联盟赚钱、网站SEO优化、域名投资、广告投放盈利、威客、博客、淘客赚钱等多个方面。 本手册中作者结合自身的网络赚钱经历,通过具体的、可操作......一起来看看 《100个可操作的网络赚钱方法》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具