首页 web前端 js教程 js异步加载的三种解决方案_javascript技巧

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

May 16, 2016 pm 05:41 PM
异步加载 阻塞

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

(1) defer,只支持IE
defer属性的定义和用法(我摘自w3school网站)
defer 属性规定是否对脚本执行进行延迟,直到页面加载为止。
有的 javascript 脚本 document.write 方法来创建当前的文档内容,其他脚本就不一定是了。

如果您的脚本不会改变文档的内容,可将 defer 属性加入到 <script> 标签中,以便加快处理文档的速度。因为浏览器知道它将能够安全地读取文档的剩余部分而不用执行脚本,它将推迟对脚本的解释,直到文档已经显示给用户为止。 <BR>示例: <BR><div class="codetitle"><span><a style="CURSOR: pointer" data="71033" class="copybut" id="copybut71033" onclick="doCopy('code71033')"><U>复制代码 代码如下:<div class="codebody" id="code71033"> <BR><script type="text/javascript" defer="defer"> <BR>alert(document.getElementById("p1").firstChild.nodeValue); <BR></script>

(2) async
async的定义和用法(是HTML5的属性)
async 属性规定一旦脚本可用,则会异步执行。
示例:

复制代码 代码如下:



注释:async 属性仅适用于外部脚本(只有在使用 src 属性时)。
注释:有多种执行外部脚本的方法:
•如果 async="async":脚本相对于页面的其余部分异步地执行(当页面继续进行解析时,脚本将被执行)
•如果不使用 async 且 defer="defer":脚本将在页面完成解析时执行
•如果既不使用 async 也不使用 defer:在浏览器继续解析页面之前,立即读取并执行脚本

(3) 创建script,插入到DOM中,加载完毕后callBack,见代码:
复制代码 代码如下:

function loadScript(url, 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();
};
}
script.src = url;
document.body.appendChild(script);
}
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

有效应对jQuery .val()不起作用的情势 有效应对jQuery .val()不起作用的情势 Feb 20, 2024 pm 09:36 PM

标题:解决jQuery.val()不起作用的方法及代码示例在前端开发中,经常会使用到jQuery来操作页面元素。其中,获取或设置表单元素的值是常见的操作之一。通常,我们会使用jQuery的.val()方法来实现对表单元素值的操作。然而,有时候会遇到jQuery.val()不起作用的情况,这可能会导致一些问题。本文将介绍如何有效应对jQuery.val(

c#什么是委托解决什么问题 c#什么是委托解决什么问题 Apr 04, 2024 pm 12:42 PM

委托是一种类型安全的引用类型,用于在对象之间传递方法指针,解决异步编程和事件处理问题:异步编程:委托允许在不同线程或进程中执行方法,提高应用程序响应能力。事件处理:委托简化了事件处理,允许创建和处理事件,例如单击或鼠标移动。

html怎么读取 html怎么读取 Apr 05, 2024 am 08:36 AM

虽然 HTML 本身无法读取文件,但可以通过以下方法实现文件读取:使用 JavaScript(XMLHttpRequest、fetch());使用服务器端语言(PHP、Node.js);使用第三方库(jQuery.get()、axios、fs-extra)。

提升网站速度的关键优化模式,每个前端开发者都必须掌握! 提升网站速度的关键优化模式,每个前端开发者都必须掌握! Feb 02, 2024 pm 05:36 PM

前端开发者必备:掌握这些优化模式,让网站飞起来!随着互联网的快速发展,网站已经成为企业宣传和交流的重要渠道之一。一个性能优良、加载迅速的网站不仅可以提升用户体验,还可以吸引更多的访问者。作为一名前端开发者,掌握一些优化模式是必不可少的。本文将介绍一些常用的前端优化技术,帮助开发者更好地优化网站。压缩文件在网站开发中,经常使用的文件类型包括HTML、CSS和J

了解Go语言中阻塞的实现方法与优势 了解Go语言中阻塞的实现方法与优势 Mar 24, 2024 am 08:36 AM

Go语言是一种并发特性十分强大的编程语言,它采用了goroutine的概念来实现并发,同时也提供了丰富的工具和方法来处理阻塞。在Go语言中,阻塞的实现方法与优势是我们需要了解的重要内容。本文将介绍Go语言中阻塞的实现方法及其优势,并提供具体的代码示例来帮助读者更好地理解。阻塞的实现方法在Go语言中,阻塞可以通过多种方式实现,其中包括通道(channel)、互

html怎么引入外部js html怎么引入外部js Apr 11, 2024 am 06:18 AM

要在 HTML 中引入外部 JS 文件,请使用 <script> 标签并指定要加载的文件的 URL。还可以指定 type、defer 或 async 属性来控制加载和执行方式。通常,<script> 标签应放置在 <body> 部分的底部,以避免阻塞页面渲染。

如何在WordPress中实现页面不跳转设置? 如何在WordPress中实现页面不跳转设置? Mar 05, 2024 am 09:33 AM

如何在WordPress中实现页面不跳转设置?在网站开发中,有时候我们希望在WordPress中实现页面不跳转的设置,即在某些操作的时候,页面内容可以更新但不刷新整个页面。这样可以提升用户体验,使网站更加流畅。接下来,我们将分享如何在WordPress中实现页面不跳转设置的方法,并提供具体的代码示例。首先,我们可以使用Ajax来实现页面不跳转的功能。Ajax

PHP搜索功能优化技巧分享 PHP搜索功能优化技巧分享 Mar 06, 2024 am 11:12 AM

PHP搜索功能一直是网站开发中非常重要的一环,因为用户往往通过搜索框来查找所需信息。然而,不少网站在实现搜索功能时存在效率低下、搜索结果不准确等问题。为了帮助大家优化PHP搜索功能,本文将分享一些技巧,并提供具体的代码示例。1.使用全文搜索引擎传统的SQL数据库在处理大量文本内容时效率较低,因此建议使用全文搜索引擎,如Elasticsearch、Solr等

See all articles