JavaScript|JS异步加载

简介: JavaScript|JS异步加载

1 问题描述

JS为什么需要异步加载?首先要了解到JS在默认情况下是以同步模式(阻塞模式)加载的,浏览器对于代码请求的资源都是瀑布式的加载,而不是阻塞式的,但是JS的执行总是阻塞的。而对于异步加载(非阻塞加载),浏览器在加载JS的同时,还会继续进行后续页面的处理。接下来,就来看看异步加载是怎么回事吧。


2 问题解决

1)动态生成script标签

<body>

    <p>这是文本</p>

    <script type="text/javascript">

    (function(){

       var s=document.createElement("script");

       s.type="text/javascript";

       s.src="http://china-addthis.googlecode.com/svn/trunk/addthis.js";

       document.body.appendChild(s);

    })();

    </script>

    <script type="text/javascript" src='http://libs.baidu.com/jquery/2.0.0/jquery.min.js'></script>

    <script type="text/javascript">

       alert("hello world");

    </script>

</body>

2async属性

async属性规定一旦脚本可用,则会异步执行(一旦下载完毕就会立刻执行)。其仅适用于外部脚本(在使用src属性时适用)。

<body>

    <p>这是文本</p>

    <script type="text/javascript"  src='http://china-addthis.googlecode.com/svn/trunk/addthis.js'  async="async"></script>

    <script type="text/javascript"  src='http://libs.baidu.com/jquery/2.0.0/jquery.min.js'></script>

    <script type="text/javascript">

       alert("hello world");

    </script>

</body>

3defer属性

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

<body>

    <p>这是文本</p>

    <script type="text/javascript"  src='http://china-addthis.googlecode.com/svn/trunk/addthis.js'  defer="defer"></script>

    <script type="text/javascript" src='http://libs.baidu.com/jquery/2.0.0/jquery.min.js'></script>

    <script type="text/javascript">

       alert("hello world");

    </script>

</body>


3 其他方法

XHR注入(通过XMLHttpRequest对象来获取JS,然后创建一个script元素插入到DOM结构中);ajaxeval(使用ajax得到脚本内容,然后通过evalxmlhttp.responseText)来运行脚本)iframe等。

目录
相关文章
|
1月前
|
监控 JavaScript 前端开发
确定使用 `defer` 属性还是 `async` 属性来异步加载 JavaScript
【10月更文挑战第24天】选择使用 `defer` 属性还是 `async` 属性来异步加载 JavaScript 是一个需要综合考虑多个因素的决策。需要根据脚本之间的依赖关系、页面加载性能要求、脚本的功能和重要性等因素来进行权衡。在实际应用中,需要通过测试和验证来确定最适合的加载方式,以提供更好的用户体验和页面性能。
|
25天前
|
JavaScript 前端开发 Java
springboot解决js前端跨域问题,javascript跨域问题解决
本文介绍了如何在Spring Boot项目中编写Filter过滤器以处理跨域问题,并通过一个示例展示了使用JavaScript进行跨域请求的方法。首先,在Spring Boot应用中添加一个实现了`Filter`接口的类,设置响应头允许所有来源的跨域请求。接着,通过一个简单的HTML页面和jQuery发送AJAX请求到指定URL,验证跨域请求是否成功。文中还提供了请求成功的响应数据样例及请求效果截图。
springboot解决js前端跨域问题,javascript跨域问题解决
|
28天前
|
JavaScript 前端开发
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
|
1月前
|
JavaScript 前端开发 Go
异步加载 JS 的方法
【10月更文挑战第24天】异步加载 JavaScript 是提高网页性能和用户体验的重要手段。通过使用不同的方法和技术,可以实现灵活、高效的异步加载 JavaScript。在实际应用中,需要根据具体情况选择合适的方法,并注意处理可能出现的问题,以确保网页能够正常加载和执行。
|
1月前
|
监控 JavaScript 前端开发
使用 `defer` 属性异步加载 JavaScript
【10月更文挑战第24天】使用 `defer` 属性异步加载 JavaScript 是一种有效的提高页面性能和用户体验的方法。通过合理设置 `defer` 属性,可以在不影响页面渲染的情况下异步加载脚本,并确保脚本的执行顺序。在实际应用中,需要根据具体情况选择合适的加载方式,并注意处理可能出现的问题,以确保页面能够正常加载和执行。
|
28天前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API
|
2月前
|
人工智能 JavaScript 前端开发
使用Node.js模拟执行JavaScript
使用Node.js模拟执行JavaScript
28 2
|
2月前
|
消息中间件 JavaScript 前端开发
用于全栈数据流的 JavaScript、Node.js 和 Apache Kafka
用于全栈数据流的 JavaScript、Node.js 和 Apache Kafka
50 1
|
2月前
|
移动开发 JavaScript 前端开发
【JavaScript】JS执行机制--同步与异步
【JavaScript】JS执行机制--同步与异步
24 1
|
2月前
|
JavaScript 前端开发
电话号码正则表达式 代码 javascript+html,JS正则表达式判断11位手机号码
电话号码正则表达式 代码 javascript+html,JS正则表达式判断11位手机号码
124 1
下一篇
DataWorks