js学习笔记:script元素
2016-09-08 21:48
260 查看
script元素
在解释器对 < script > 元素内部的所有代码求值完毕以前,页面中的其余内容都不会被浏览器加载或显示。在解析外部js文件(包括下载该文件)时,页面的处理也会暂时停止。
带有src属性的< script >元素内部不应该再包含额外的代码了。如果包含嵌入的代码,则只会下载并执行外部脚本文件,嵌入的代码会被忽略。
只要不存在async和defer属性,浏览器都会按照< script >元素在页面中出现的先后顺序对它们依次进行解析。第一个被解析完后解析第二个……
标签的位置
因为浏览器遇到body标签才开始呈现内容,因此如果把script标签放到head中,就意味着必须等到全部js代码都被下载、解析和执行完毕后才开始呈现页面内容。因此一般把script标签放到body中页面内容的后面。延迟脚本(defer)与异步脚本(async)
1.这两个属性都只适用于外部脚本。
2.都是立即下载,且下载期间不阻塞html解析,但defer是延迟执行,async是解析完马上执行。
3.都不保证执行的先后顺序。
defer属性表明脚本在执行时不会影响页面的构造,即脚本会被延迟到整个页面都解析完毕后再运行。因此,defer属性表明立即下载,但延迟执行。
<head> <script defer="defer" src="a.js"></script> <script defer="defer" src="b.js"></script> </head>
虽然把script放到head中,但其中包含的脚本将延迟到浏览器遇到< /html>后再执行。
但延迟脚本并不会一定按照顺序执行,因此最好只包含一个延迟脚本。
async脚本的目的是不让页面等待脚本下载和执行,从而异步加载页面其它内容,因此异步脚本最好不要在加载期间修改DOM。 异步脚本一定会在页面的load事件前执行。
<head> <script async src="a.js"></script> <script async src="b.js"></script> </head>
< noscript>元素
浏览器不支持脚本脚本被禁用
这两种情况下浏览器就会显示< noscript>中的内容,让不支持js的页面平稳退化。
相关文章推荐
- 【js学习笔记-101】------借助<script>发送HTTP请求
- js学习笔记17----元素的各种位置,尺寸
- 学习笔记之php页面中js获取标签元素的ID值方法
- 【js学习笔记-081】-----选取文档元素
- JS DOM编程艺术——DOM获取元素—— JS学习笔记2015-7-6(第77天)
- JS-元素大小深入学习-offset、client、scroll等学习研究笔记
- JS学习笔记2——利用filter()去除数组中的重复元素,利用filter()筛选出数组中的素数
- Vue.js学习笔记:在元素 和 template 中使用 v-if 指令
- D3.js学习笔记(三)——创建基于数据的SVG元素
- js学习笔记18----元素创建操作
- 【JS学习笔记】07 添加和删除节点(HTML 元素)
- 【js学习笔记-087】----文档和元素的几何形状和滚动(视口与窗口)
- Vue.js学习笔记:在元素 和 template 中使用 v-if 指令
- Hibernate3.2 学习笔记 映射的基本元素和属性
- [转]JS宝典学习笔记
- JS宝典学习笔记(下)
- JS学习笔记
- js学习笔记(一)
- 学习Altas 笔记[js调用重载的方法出错,如何处理]
- [转]JS宝典学习笔记