`
frank1998819
  • 浏览: 763968 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

引用JavaScript文件时的两个属性defer和async(转)

 
阅读更多

引用js文件格式如下:

  1. <script type="text/javascript" defer="defer" async="true/false" src="js文档地址"></script>
  • defer="defer":该属性用来通知浏览器,这段脚本代码将不会产生任何文档内容。例如JavaScript代码中的document.write()方法将不会骑作用,浏览器遇到这样的代码将会忽略,并继续执行后面的代码。属性只能是defer,与属性名相同。在HTML语法格式下,也允许不定义属性值,仅仅使用属性名。
  • async="true/false":该属性为html5中新增的属性,它的作用是能够异步地下载和执行脚本,不因为加载脚本而阻塞页面的加载。一旦下载完毕就会立刻执行。

async和defer一样,都不会阻塞其他资源下载,所以不会影响页面的加载,但在async的情况下,js文档一旦下载完毕就会立刻执行,所以很有可能不是按照原本的顺序来执行,如果js有依赖性,就要注意了。

如下图:

defer和async的比较

相同点:

  • 加载文件时不阻塞页面渲染;
  • 对于inline的script无效;
  • 使用这两个属性的脚本中不能调用document.write方法;
  • 有脚本的onload的事件回调;
  • 允许不定义属性值,仅仅使用属性名;

不同点:

  • html的版本html4.0中定义了defer;html5.0中定义了async;这将造成由于浏览器版本的不同而对其支持的程度不同;
  • 执行时刻:每一个async属性的脚本都在它下载结束之后立刻执行,同时会在window的load事件之前执行。所以就有可能出现脚本执行顺序被打乱的情况;每一个defer属性的脚本都是在页面解析完毕之后,按照原本的顺序执行,同时会在document的DOMContentLoaded之前执行。

这两个属性会有三种可能的组合:

  • 如果async为true,那么脚本在下载完成后异步执行。
  • 如果async为false,defer为true,那么脚本会在页面解析完毕之后执行。
  • 如果async和defer都为false,那么脚本会在页面解析中,停止页面解析,立刻下载并且执行。
分享到:
评论

相关推荐

    浅谈HTML5 defer和async的区别

    HTML5的`&lt;script&gt;`元素提供了两个可选的属性,`defer`和`async`,它们主要用于控制外部JavaScript脚本的加载和执行方式。这两者的设计目标都是为了优化页面加载性能,避免因为脚本的执行阻塞页面的渲染。 1. **没有...

    06-defer和async.md

    本篇文档围绕这两个属性进行解释,并扩展到前端面试相关的知识点。 ### defer和async的特性 - `&lt;script src="xxx.js"&gt;`标签不包含`defer`或`async`属性时,浏览器在解析到此标签会暂停HTML文档的解析,开始下载并...

    浏览器环境下JavaScript脚本加载与执行探析之defer与async特性

    defer和async特性相信是很多JavaScript开发者”熟悉而又不熟悉”的两个特性,从字面上来看,二者的功能很好理解,分别是”延迟脚本”和”异步脚本”的作用。然而,以defer为例,一些细节问题可能开发者却并不一定...

    js的[defer]和[async]属性

    JS中defer和async属性是HTML文档加载和执行外部JavaScript文件时的重要关键字,它们指示浏览器如何处理脚本与页面内容的加载顺序和执行时机。了解这两个属性对于编写高性能的网页至关重要。 首先,我们需要了解...

    JS中script标签defer和async属性的区别详解

    为了优化网页加载性能,HTML5引入了两个重要属性:`defer`和`async`。这些属性为开发者提供了更多的控制,使得JavaScript的加载和执行更加灵活,避免了因脚本加载导致的页面渲染延迟。 1. **没有defer或async属性**...

    浅析script标签中的defer与async属性

    这两个属性都是用来控制脚本的加载和执行方式。 **1. defer属性** `defer`属性的作用是声明脚本在不影响页面解析的情况下执行。当`defer`属性被设置在`&lt;script&gt;`标签上,浏览器会立即下载脚本文件,但会等到整个...

    HTML5 script元素async、defer异步加载使用介绍

    HTML5的`&lt;script&gt;`元素引入了两个重要的属性:`async`和`defer`,这两个属性主要用于异步加载JavaScript文件,以减少页面加载时的阻塞,提高用户体验。在过去,开发者通常需要通过复杂的JavaScript技巧来实现类似的...

    javascript函数动态加载javascript文件

    加载JS文件时,可以创建一个新的XMLHttpRequest实例,打开到目标URL的连接,然后发送请求。当服务器响应时,将返回的JS代码插入到`&lt;script&gt;`标签中。例如: ```javascript var xhr = new XMLHttpRequest(); xhr....

    HTML引用JavaScript

    - 使用`async`或`defer`属性来控制脚本的执行顺序和是否阻塞页面渲染。`async`使得脚本异步加载,不保证执行顺序;`defer`则在文档解析完成后、`&lt;body&gt;`标签前执行脚本,保持执行顺序。 总的来说,HTML引用...

    动态加载外部JS文件

    1. 使用`&lt;script&gt;`标签的`async`和`defer`属性:这两个属性可以在不使用额外的JavaScript库或API的情况下实现异步加载。`async`属性使脚本并行加载,不保证执行顺序;`defer`属性则保证脚本在DOM解析完成后、...

    JS script脚本中async和defer区别详解

    在JavaScript的世界里,`async` 和 `defer` 是两个在`&lt;script&gt;`标签中用于控制脚本加载和执行方式的关键属性。它们主要用来解决脚本阻塞页面渲染的问题,确保网页的加载性能和用户体验。下面将详细讲解这两个属性的...

    前端开源库-defer-promise

    而延迟承诺(Deferred)是Promise的一种扩展,它包含了两个部分:`resolve` 和 `reject` 函数,它们分别用于标记Promise的成功和失败。`defer-promise` 库正是为了创建和管理这些延迟承诺而设计的。 ### 2. `defer-...

    HTML5应用开发技术-JavaScript入门.pptx

    外链式是将JavaScript代码保存在独立的`.js`文件中,然后通过`&lt;script&gt;`标签的`src`属性引用。例如: ```html &lt;script src="js/test.js"&gt;&lt;/script&gt; ``` 路径可以是相对路径、绝对路径或者URL地址,以确保浏览器能...

    JavaScript提高加载和执行效率的方法

    异步加载与延迟执行异步加载(async)和延迟执行(defer)是两种可以改善JavaScript加载和执行效率的技术。 1. 异步加载(async):通过在标签中添加async属性,可以让浏览器非阻塞地下载JavaScript文件,即在下载...

    【第八章】JavaScript【Script标签与访问HTML页面(2)】

    - 外部引用:通过`src`属性指向.js文件,如`&lt;script src="path/to/yourfile.js"&gt;&lt;/script&gt;`,这样可以将JS代码分离到单独的文件,提高代码可维护性。 - 异步加载(async):`async`属性使脚本在不阻塞页面渲染的...

    详解关于html,css,js三者的加载顺序问题

    此外,为了解决JavaScript文件的阻塞问题,可以使用HTML5提供的两个属性:defer和async。在标签中加入defer属性,可以让浏览器将JavaScript脚本的下载与DOM解析并行进行,但会等到DOM文档完全解析后再执行脚本。...

    JavaScript&HTML教程

    为了确保兼容性和加载性能,可以使用`async`或`defer`属性来控制脚本的加载方式。 **PDF(便携式文档格式)** PDF是一种跨平台的文件格式,用于保存文档的布局和内容。JavaScript与PDF的结合,使得在PDF文档中实现...

    script的async属性以非阻塞的模式加载脚本

    为了解决这个问题,HTML5引入了`async`和`defer`两个属性,它们允许以非阻塞的方式加载脚本,从而改善页面性能。 **async属性** `async`属性允许脚本异步加载,这意味着脚本的下载不会阻塞HTML解析。当脚本下载...

Global site tag (gtag.js) - Google Analytics