HTML4.01为script标签定义了5个属性:
charset 可选。指定src引入代码的字符集,大多数浏览器忽略该值。
defer 可选。延迟脚本执行,相当于将script标签放入页面body标签的底部。除IE和较新版本的Firefox外,其他浏览器并未支持。
language 已废弃。大部分浏览器会忽略该值。
src 可选。指定引入的外部代码文件,不限制后缀名。
type 必选。指定脚本的内容类型(MIME类型)。现实中通常不指定该值也可以,浏览器会默认当作text/javascript类型来解释执行。
HTML5中的script属性
script标签在HTML5中除了具备HTML5标准属性以外,与HTML4.01相比移除了language属性,修改了type属性为可选的(默认text/javascript),并新增了一个属性async。
async属性的作用
定义脚本是否异步执行,取值true或false。
async如果指定为true,脚本会在页面渲染显示的过程中解析执行(浏览器会判断该脚本是否处于可用状态),这是一个很有意思也很实用的功能。
现在的script是怎样的?
1、把它放在head标签内。在下载script引入的外部脚本时,浏览器处于阻塞状态,网络不好或者script文件过大时,页面处于空白停顿状态,体验是并不够好。
2、把它放入页面底部。这是大家公认的提高前端页面性能和体验的方法,但还是存在一定的问题,放在页面底部的脚本是要等到页面文档流下载完毕才去下载、执行,页面中的交互会存在一个延迟的时间去实现。虽然页面显示时间变短了,但交互却被延后了。体验也不够好。
3、按需执行。在head标签内引入部分公共脚本,在每一个需要交互的HTML元素之后插
入script立即执行,需要特定条件才执行的脚本放到页面最底部。这也不是一个完美的解决方案,一则页面内穿插过多的script标签引起维护不便,二
来底部脚本还未加载完时用户便触发了某个条件该怎么办?虽有方法实现,但体验仍不够好。
支持async属性之后改变了什么?
async属性就是解决上面这些问题的,这样我们就可以在head标签内插入script,脚本与文档同时下载,脚本、文档可用时便执行。
async与defer
摘抄HTML5手册的解释,很好理解:
如果 async 属性为 true,则脚本会相对于文档的其余部分异步执行,这样脚本会可以在页面继续解析的过程中来执行。
如果 async 属性为 false,而 defer 属性为 true,则脚本会在页面完成解析时得到执行。
如果 async 和 defer 属性均为 false,那么脚本会立即执行,页面会在脚本执行完毕继续解析。
改变往往意味着丢掉不合时宜的,增加满足用户新需求的功能,HTML5很多新增特性让人期待,随着新装机安装windows7带来的IE版本的提升,距离IE6倒下的时刻不会太远了,未来的浏览器是否还是IE的天下也不好说。
参考资料:
http://developer.yahoo.com/performance/rules.html#js_bottom
http://www.w3school.com.cn/html5/html5_script.asp
http://www.w3.org/TR/html4/interact/scripts.html
http://www.w3.org/TR/2010/WD-html5-20101019/scripting-1.html#script
分享到:
相关推荐
**async属性** `async`属性使得JavaScript脚本可以异步加载,即在脚本下载的同时,浏览器可以继续解析HTML文档。当脚本下载完成时,无论下载顺序如何,它会立即执行,但不会保证按照脚本在页面中出现的顺序执行。这...
1.HTML5实现了script的async属性,这个新的属性可以让js在浏览器中以非阻塞的模式加载,另外script还有一个defer属性,这个属性目前所有浏览器都已实现(除了firefox和chrome的早期版本),IE这方面做得好,从一开始...
【script标签中的defer与async属性】 在HTML中,`<script>`标签通常用来引入JavaScript文件,但在实际应用中,为了优化页面加载性能,我们有时会使用`defer`和`async`属性。这两个属性都是用来控制脚本的加载和执行...
1. **没有defer或async属性**: 当`<script>`标签没有这两个属性时,浏览器会立即下载脚本,并在解析到该标签时执行。这意味着在执行脚本的过程中,浏览器会暂停HTML的解析,直到脚本执行完毕。这种方法对于小脚本...
### HTML5中的`<script>`...`<script>`标签是HTML5中非常重要的元素之一,它支持多种属性来控制脚本的行为。合理利用这些属性可以帮助开发者构建出更高效、响应更快的应用程序。了解这些细节对于优化Web性能至关重要。
JS中defer和async属性是HTML文档加载和执行外部JavaScript文件时的重要关键字,它们指示浏览器如何处理脚本与页面内容的加载顺序和执行时机。了解这两个属性对于编写高性能的网页至关重要。 首先,我们需要了解...
随着HTML5的发展,`type`属性默认值已经被设置为`application/javascript`,因此现代浏览器中不再需要显式地指定`type="text/javascript"`。然而,在某些旧版的HTML文档或者为了保持兼容性时,仍然会见到这样的写法...
HTML5的`<script>`元素提供了两个可选的属性,`defer`和`async`,它们主要用于控制外部JavaScript脚本的加载和执行方式。这两者的设计目标都是为了优化页面加载性能,避免因为脚本的执行阻塞页面的渲染。 1. **没有...
jQueryTree的异步加载功能主要通过API中的`data-url`属性实现,这个属性可以设置一个URL,当用户展开树形结构的某个节点时,jQueryTree会发送一个Ajax请求到该URL,获取子节点的数据。 **配置异步加载** 在使用...
HTML(HyperText Markup Language)和JavaScript是Web开发中的两种核心技术,它们共同构建了现代网页的交互性和动态性。HTML作为标记语言,负责定义网页的基本结构和内容,而JavaScript则是一种脚本语言,用于增加...
在JavaScript的世界里,`async` 和 `defer` 是两个在`<script>`标签中用于控制脚本加载和执行方式的关键属性。它们主要用来解决脚本阻塞页面渲染的问题,确保网页的加载性能和用户体验。下面将详细讲解这两个属性的...
async属性是HTML5标准中的一部分,它的主要目的是允许浏览器异步加载JavaScript文件。这意味着浏览器可以在下载JavaScript文件的同时继续构建DOM,下载JavaScript文件不会阻塞DOM的构建。一旦文件下载完成,它会立即...
在网页开发中,有时我们需要在页面加载过程中动态地向`<head>`标签内添加`<script>`元素,以便实现异步加载脚本、延迟加载或按需加载等功能。这种技术对于优化网页性能、减少首屏加载时间以及提高用户体验至关重要。...
8. 异步:async 属性与 <script> 元素一起使用,指示脚本应该异步执行。例如:<script async src="myscript.js"></script> 该属性可以应用于脚本加载优化、页面性能优化等场景,提高页面加载速度。 9. 接受属性:...
在前端技术领域,理解`<script>`标签的`defer`和`async`属性的区别是开发中常见的需求,这关系到页面加载性能和脚本执行顺序。本篇文档围绕这两个属性进行解释,并扩展到前端面试相关的知识点。 ### defer和async的...
【第八章】JavaScript【Script标签与访问HTML页面(2)】这一主题主要涵盖了JavaScript在网页中的应用,特别是关于`<script>`标签的使用以及如何通过JavaScript来操作和访问HTML页面内容。JavaScript是一种广泛用于Web...