script async 和script defer的区别
浏览器对js文件的操作主要有两部分:下载和执行;
js文件下载在有些浏览器中是并行的,在有些浏览器中是串行的,如:IE8、firefox3、chrome2都是串行下载的;
执行在所有浏览器中默认是阻塞的,当js在执行时不会进行html解析和其他操作,所以,页面顶部的js不宜过大,过大会导致页面长时间处于空白状态,对于外链的js文件,async和defer属性可以减少对页面加载的影响
async表示js是否异步执行,当有这个属性时则不阻塞当前页面的加载,并在js下载完后立刻执行,但是不能保证多个script标签的执行顺序
defer表示js是否延迟执行,当有这个属性时js的执行会推迟到页面解析完成之后,可以保证多个script标签的执行顺序,需要注意的是这两个属性目前对于内嵌的js是无效的而对于dom中创建的script标签在浏览器中则是异步的
如果async为true,那么脚本在下载完成后异步执行
如果async为false,defer为true,那么脚本会在页面解析完毕之后执行
如果async和defer都为false,那么脚本会在页面解析中,停止页面解析,立刻下载并且执行
注:本文来自摘抄
script async 和script defer的区别的更多相关文章
- JS—ajax及async和defer的区别
###1.ajax “Asynchronous Javascript And XML”(异步 JavaScript 和 XML) 使用: 如不考虑旧版本浏览器兼容性, // 第一步创建xhr对象 v ...
- 异步加载script,提高前端性能(defer和async属性的区别)
一.异步加载script的好处 为了加快首屏响应速度,前端会采用代码切割.按需加载等方式优化性能.异步加载script也是一种前端优化的手段. 就好比如果我的页面其中一个功能需要打开地图,但是地图的j ...
- <script>, <script async>, <script defer> 三种标签的区别
<script>, <script async>, <script defer> 三种标签的区别 <script>标签 阻塞html parsing 脚 ...
- script标签async和defer的区别及作用
作用: 1.没有 defer 或 async,浏览器会立即加载并执行指定的脚本,也就是说不等待后续载入的文档元素,读到就加载并执行. 2.async 属性表示异步执行引入的 JavaScript,与 ...
- script标签不带属性与带async、defer的区别
<script> 当页面解析到script标签时,会停止解析并下载对应的脚本,并马上执行,执行完毕后再继续解析页面 <script async> async 在下载脚本的同时不 ...
- <script>属性async和defer的区别
async:可选.表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或 等待加载其他脚本.只对外部脚本文件有效. defer:可选.表示脚本可以延迟到文档完全被解析和显示之后再执行.只 ...
- script async / defer
script async / defer preload / prefetch https://abc.xgqfrms.xyz/ https://javascript.info/script-asyn ...
- script标签里的defer属性
入职新公司,看代码的时候注意到有的script标签中有一个defer属性,查了一下.在这里分享出来. 需要注意的有三点,其中前两点是在错误中分辨出来的: 错误来源:http://www.w3schoo ...
- <script runat=server>、<%%>和<%#%>的区别
①<script runat="server">代码段与<%%>内联代码段的区别 在asp.net页面的aspx文件中允许使用<script runa ...
随机推荐
- Http原理理解及内容整理
更多资料及交流请加群:
- 使用KRPano资源分析工具一键下载全景网站切片图
软件交流群:571171251(软件免费版本在群内提供) krpano技术交流群:551278936(软件免费版本在群内提供) 最新博客地址:blog.turenlong.com 限时下载地址:htt ...
- Glassfish在SpringMVC服务端接收请求时字符出现乱码的解决办法
环境描述 前端:jsp 后端:SpringMVC Controller 尽管jsp页面已设置了pageEncoding: <%@page contentType="text/html& ...
- docker容器与容器云读书笔记1
搭建docker应用栈 操作系统: ubuntu 16.04.1 LTS 桌面版 1. 准备工作 换网易源, gedit 会报一个metadata的告警, 不用理会, sudo apt-get upd ...
- iOS delegate
有两个scene,分别为Scene A和Scene B.Scene A上有一个UIButton(Button A)和一个UILable(Lable A):Scene B上有一个UITextFiled( ...
- debian8安装Odoo中的Barcode Scanner Hardware Driver模块时,提示没有evdev
解决方法: $ apt-get install python-dev python-pip gcc $ apt-get install linux-headers-$(uname -r) $ sudo ...
- python 装饰器
#!/usr/bin/env python3 #-*-encoding:utf-8-*- def w3(*args, **kwargs): ') def w1(): def ww1(func): de ...
- Yii 1开发日记 -- 搜索功能及Checkbox的实现
用yii 1实现后台的搜索功能,效果如下图: 1.模型中: public function search() { $criteria = new CDbCriteria; //独立高级搜索 if(is ...
- [转]阿里巴巴数据库连接池 druid配置详解
一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...
- Linux系统开机默认开启无线网卡
Linux系统每次重新启动时,不会重新打开无线网卡,需要每次手动去更改. 这里通过两种方式开启无线网卡. 第一种方式就是手动连接到Linux系统,(前提是按照了Linux桌面) 1.找到文件夹为 et ...