`

js的异步加载

阅读更多

     默认情况javascript是同步加载的,也就是javascript的加载时阻塞的,后面的元素要等待javascript加载完毕后才能进行再加载,对于一些意义不是很大的javascript,如果放在页头会导致加载很慢的话,是会严重影响用户体验的。

     如何解决这个问题呢,接下来将为你详细介绍下异步加载js三种实现方案,感兴趣的你可以参考下

 

    (1) defer,只支持IE

 ( iE9及以下支持,IE10及以上不支持该属性了,个人建议不要使用了,拥抱现代浏览器吧)

     defer属性的定义和用法(我摘自w3school网站,了解下就行了)

    defer 属性规定是否对脚本执行进行延迟,直到页面加载为止。

   有的 javascript 脚本 document.write 方法来创建当前的文档内容,其他脚本就不一定是了。

   如果您的脚本不会改变文档的内容,可将 defer 属性加入到 <script> 标签中,以便加快处理文档的速度。

   因为浏览器知道它将能够安全地读取文档的剩余部分而不用执行脚本,它将推迟对脚本的解释,直到文档已经显示给用户为止。

   示例:

 

   代码如下:

 

    <script type="text/javascript" defer="defer">

    alert(document.getElementById("p1").firstChild.nodeValue);

    </script> 

 

(2) async:(IE9及以下不支持)

   async的定义和用法(是HTML5的属性)

   async 属性规定一旦脚本可用,则会异步执行。

   示例:

   代码如下:

    <script type="text/javascript" src="demo_async.js" async="async"></script> 

   注释:async 属性仅适用于外部脚本(只有在使用 src 属性时)。

   注释:有多种执行外部脚本的方法:

  •如果 async="async":脚本相对于页面的其余部分异步地执行(当页面继续进行解析时,脚本将被执行)

  •如果不使用 async 且 defer="defer":脚本将在页面完成解析时执行(个人不建议使用defer)

  •如果既不使用 async 也不使用 defer:在浏览器继续解析页面之前,立即读取并执行脚本

 

(3) 创建script,插入到DOM中,加载完毕后callBack,在很多模块加载器中,大部分用的以下代码,见代码:

代码如下:

 

var script = document.createElement_x("script")
script.type = "text/javascript";
if (script.readyState){ //IE
      script.onreadystatechange = function(){
      if (script.readyState == "loaded" ||
         script.readyState == "complete"){
         script.onreadystatechange = null;
         callback();
      }
   };
} else { //Others: Firefox, Safari, Chrome, and Opera
      script.onload = function(){
          callback();
      };
}
document.body.appendChild(script); 

 

补充知识:

document.currentScript

描述:

返回其所包含的脚本正在被执行的 <script> 元素.

用法:

document.currentScript

https://developer.mozilla.org/en-US/docs/Web/API/Document/currentScript

分享到:
评论

相关推荐

    JS异步加载图片

    在JavaScript(JS)中,异步加载图片是...通过以上介绍,我们可以了解到JavaScript异步加载图片的基本概念、实现方式以及优化策略。在实际开发中,根据项目需求选择合适的方法,可以有效提升网页的加载速度和用户体验。

    js 异步加载js, css文件

    当项目js(css)文件使用越来越多,js 文件的加载也成了性能上的一个问题,此资源能够在页面全部加载完成后异步加载js等资源文件,它可以顺序加载资源列表,也可以并发加载资源列表,它包含一个方法调用接口:...

    JS异步加载库

    JavaScript(JS)异步加载库是一种能够帮助开发者在网页中延迟加载或按需加载JavaScript资源的工具。这种库可以显著提高网页性能,减少首屏加载时间,优化用户体验,特别是对于那些依赖大量脚本的复杂应用而言。下面...

    js异步加载代码

    在"asyLoad.js"这个文件中,我们可以预期它包含了一段用于实现JavaScript异步加载的代码。下面将详细介绍异步加载的原理和常见实现方法。 1. **异步加载的原理**: - 使用`&lt;script&gt;`标签的`async`属性:当`async`...

    js异步加载.docx

    JavaScript 异步加载是网页优化的关键技术之一,它允许脚本在不阻塞浏览器解析页面的情况下进行下载和执行。在传统的同步加载模式下,JavaScript 文件的加载会暂停HTML的解析,直到该脚本完全下载并执行完毕。这可能...

    详解JS异步加载的三种方式

    JavaScript异步加载是提高网页性能的关键技术之一,它允许脚本在不阻塞浏览器解析页面的情况下执行。在本文中,我们将深入探讨JS异步加载的三种主要方式。 **一、同步加载** 同步加载是最传统的加载方式,即...

    jsloader 异步加载js文件

    总结来说,`JSLoader`是一种高效的JavaScript异步加载工具,通过它可以优化页面加载速度,同时结合Dojo进度条,能够为用户提供更友好的加载体验。正确地理解和使用`JSLoader`,有助于提升Web应用的整体性能和用户...

    点评js异步加载的4种方式

    首先,我们要了解什么是js异步加载,它是相对于同步加载的一种方式。在同步加载中,JavaScript文件的加载和执行会阻塞浏览器,直到文件加载完成并执行完毕,才继续加载页面的其他内容,这种加载方式会影响页面加载...

    异步数据加载时,所用的等待组件,JS源码,类似于UI Block

    在描述中提到,这个组件是针对AJAX(Asynchronous JavaScript and XML)异步加载数据场景设计的。AJAX允许网页在不重新加载整个页面的情况下,与服务器交换数据并局部更新页面。当使用AJAX请求时,加载指示器会在...

    js异步加载的三种解决方案

    为了解决这个问题,JavaScript提供了三种主要的异步加载解决方案: 1. **`defer`属性**: `defer`属性是为了解决JavaScript阻塞HTML解析的问题而设计的。当`defer`属性被添加到`&lt;script&gt;`标签中,浏览器会等待HTML...

    JS 动态树 异步加载树 xloadtree WebFXLoadTree

    标题 "JS 动态树 异步加载树 xloadtree WebFXLoadTree" 指的是在JavaScript中实现的一种特定的树形结构组件,它具备动态加载和异步数据获取的功能。这种技术常用于构建大型数据集的层级展示,如文件系统、组织结构或...

    javascript异步加载

    为了解决这个问题,开发人员通常采用异步加载JavaScript的方法,以提高网页性能和用户体验。下面将详细介绍三种常见的异步加载JavaScript的实现方案。 1. **动态`&lt;script&gt;`标签插入**: 这是最常见的异步加载方法...

    使用Webbrowser获取异步加载的网民跟帖数据的程序

    在现代网络应用中,许多网页的内容,特别是用户交互数据如网民跟帖,是通过JavaScript等客户端技术异步加载的。这些数据通常不会在原始HTML源码中直接显示,而是由Ajax请求获取并动态插入到页面上。针对这种情况,...

    支持异步加载的纯手写的js树

    本人手写的一款js树形控件,附带图片,代码简洁,注释齐全,可读性高,易于维护,方便移植,结构清晰,思路明了,界面美观,同时支持异步加载,对浏览器的兼容行强,你还可以根据自己的需要扩展功能,可大量应用于...

    turn.js异步加载实现翻书效果

    本文实例为大家分享了turn.js异步加载实现翻书效果的具体代码,供大家参考,具体内容如下 1、阅读翻书js /** * 电子翻书 */ //var width = 1080; //var height = 1680; var width = "10rem"; var height = "15.2...

    lazyload异步加载图片

    **懒加载(Lazy Load)异步加载图片技术详解** 懒加载是一种优化网页性能的技术,它主要应用于图片或者视频等大体积资源的加载。在网页初次加载时,只加载视口内的图片,当用户滚动页面,即将进入视口的图片才会被...

    JS异步加载的三种实现方式

    在现代网页设计和开发中,JavaScript异步加载是一种重要的技术,有助于提升页面的响应速度和用户体验。异步加载意味着在不阻塞其他页面内容渲染的情况下,下载和执行JavaScript脚本。本文将深入探讨JS异步加载的三种...

    手机移动端Tab选项卡切换带下拉数据异步加载js插件

    本文将深入探讨“手机移动端Tab选项卡切换带下拉数据异步加载js插件”的相关知识,包括其工作原理、实现方式以及如何优化。 1. **Tab选项卡设计** - Tab选项卡是一种常见的界面设计模式,它允许用户通过点击不同的...

Global site tag (gtag.js) - Google Analytics