script标签的async属性是用来异步加载,异步加载的作用是否同时下载,执行html代码和js代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了script标签的async属性是用来异步加载,异步加载的作用是否同时下载,执行html代码和js代码相关的知识,希望对你有一定的参考价值。

一般的script标签(不带async等属性)加载时会阻塞浏览器,也就是说,浏览器在下载或执行该js代码块时,后面的标签不会被解析,例如在head中添加一个script,但这个script下载时网络不稳定,很长时间没有下载完成对应的js文件,那么浏览器此时一直等待这个js文件下载,此时页面不会被渲染,用户看到的就是白屏(网页文件已下载好,但浏览器不解析)
而使用async属性,浏览器会下载js文件,同时继续对后面的内容进行渲染
通常如果js不需要改变DOM结构时可以使用async进行异步加载(比如一些统计代码可以异步加载,因为此代码与页面执行逻辑无关,不会改变DOM结构)
参考技术A 如果async="async"就是一部加载,异步加载的意思就是js相对于html异步的执行,也就是页面继续进行解析时,js将会被执行。换句话说就是js和html的执行顺序不会有绝对的先后顺序。

JS之script标签

1.script标签的位置

script标签可以在head标签中,也可以在body标签中

2.async属性

async的目的是不让页面等待js文件的下载和执行,从而异步加载页面中的其他内容。只支持外部文件

3.defer属性

defer的目的是延迟执行js文件,直到浏览器遇到</html>才开始解析执行外部js文件。在IE 5,6,7中defer还能支持对嵌入脚本,IE 8以后只能支持外部js文件

4.<script src="1.js">alert(‘s‘)</script>

当script加载外部js文件时,会忽略嵌入脚本

 

所以为了JS文件能正常执行,通常将<script>标签放在<body>内容的最后面

以上是关于script标签的async属性是用来异步加载,异步加载的作用是否同时下载,执行html代码和js代码的主要内容,如果未能解决你的问题,请参考以下文章

script标签中defer和async有什么不同?

script标签中defer和async有什么不同?

总结前端开发模式和规范 2HTML5中script的async属性异步加载JS

Js延迟加载的方式都有哪些?defer和async的区别是啥?

script标签async和defer的区别及作用

如何检查是否已加载Javascript脚本异步(Async)或async属性存在?