JavaScript异步加载

js特点:单线程异步  (其实就是多线程,只是说用异步的方式表现出来了而已)

同步的会阻塞代码,在html中,只有script标签中的src会阻塞代码,可以通过defer属性和async属性进行解决

JavaScript的异步加载:异步加载又叫非阻塞加载,浏览器在下载执行js的同时,还会继续进行后续页面的处理。主要有三种方式。

第一种:defer  只针对IE浏览器

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

第二种:async  只能加载src中的脚本,不能把代码也在script标签中

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

下面这种写法是错误的

<script async="async" src="03.js">
        var abc = 123;   //不能这样写
</script>

第三种:动态添加script标签

<body>
    <script>
        function asyncScript(url,callback){
            var script = document.createElement("script");//新建一个script标签

            // div.onclick = function(){}    先绑定事件,然后再点击

            if(script.readyState){
                script.onreadystatechange = function(){
                    //script.readyState发生改变时触发script.onreadystatechange
                    if(script.readyState == "complete" || script.readyState == "loaded"){
                        callback()
                    }
                }
            }else{
                script.onload = function(){//script.onload-->表示加载完成以后执行
                    callback()
                }
            }
            script.src = url;    //参数传递进来       src加载url是一个异步的过程
            // document.head.appendChild(script);//IE7和IE5上document没有head的DOM对象属性。
            var head = document.getElementsByTagName("head")[0];
            head.appendChild(script);

        }

        asyncScript("test.js",function(){
            test()
        })

    </script>
</body>

原文地址:https://www.cnblogs.com/conlover/p/11058935.html

时间: 2024-10-09 01:18:55

JavaScript异步加载的相关文章

Javascript 异步加载详解(转)

本文总结一下浏览器在 javascript 的加载方式. 关键词:异步加载(async loading),延迟加载(lazy loading),延迟执行(lazy execution),async 属性, defer 属性 一.同步加载与异步加载的形式 1. 同步加载 我们平时最常使用的就是这种同步加载形式: <script src="http://yourdomain.com/script.js"></script> 同步模式,又称阻塞模式,会阻止浏览器的后续

javascript 异步加载

javascript 异步加载 背景:公司使用新的统计埋点,由于弹层出现地方较多,新埋点方法未能及时压入common.js 所以需要自己引入阿里云上的埋点文件 问题1:在代码里输入 <script src="xxxx/xx.js"></script>` 后台直出到页面上==script==并未去请求js,导致代码报错 问题2:动态==异步==添加到dom中 由于是 异步的 导致 js 还没加载完 下面的埋点调用就开始执行了 js报onloginit undefi

不得不说的JavaScript异步加载

同步加载的问题 默认的js是同步加载的,这里的“加载”可以理解成是解析.执行,而不是“下载”,在最新版本的浏览器中,浏览器对于代码请求的资源都是瀑布式的加载,而不是阻塞式的,但是js的执行总是阻塞的.这会引起什么问题呢?如果我的index页面要加载一些js,但是其中的某个请求迟迟得不到响应,于是阻塞了后面的js代码的执行(同步加载),同时页面渲染也不能继续(如果js引入是在head标签后). <script type="text/javascript" src='http://c

Javascript 异步加载详解

本文总结一下浏览器在 javascript 的加载方式. 关键词:异步加载(async loading),延迟加载(lazy loading),延迟执行(lazy execution),async 属性, defer 属性 一.同步加载与异步加载的形式 1. 同步加载 我们平时最常使用的就是这种同步加载形式: <script src="http://yourdomain.com/script.js"></script> 同步模式,又称阻塞模式,会阻止浏览器的后续

javascript异步加载详解(转)

本文总结一下浏览器在 javascript 的加载方式. 关键词:异步加载(async loading),延迟加载(lazy loading),延迟执行(lazy execution),async 属性, defer 属性 一.同步加载与异步加载的形式 1. 同步加载 我们平时最常使用的就是这种同步加载形式: <script src="http://yourdomain.com/script.js"></script> 同步模式,又称阻塞模式,会阻止浏览器的后续

ztree异步加载

Ztree异步加载的意思就是: 当点击展开树节点时,才去请求后台action返回点击节点的子节点数据并加载. 直接贴代码(SpringMvc+Mybatis): 前台页面ztreeList.jsp: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); Stri

百度地图 异步加载

API 1.1和1.2版本支持异步加载,您可以在引用脚本的时候添加callback参数,当脚本加载完成后callback函数会被立刻调用.请参考下面的使用示例: <!DOCTYPE html> <html><head><meta charset="utf-8"/><title>异步加载</title> <script type="text/javascript"> // 异步加载的方

26、首先通过javascript包的异步加载来学习echarts包的结构

1.在这里先写一写前言,今天在公司搞定了一个对于滚动条进行定位的case,明天开始做TestManagement. 首先大家先来一起看一看流行的javascript文件的加载方式,这里采用别人博客上的内容,因为自己也不会 前端模块化 (1)函数封装的缺点 直接在<script></script>中写function的方式 1 function fn1(){ 2 statement 3 } 4 5 function fn2(){ 6 statement 7 } 这种做法的缺点很明显:

javascript实现js脚本的的异步加载

javascript实现js脚本的的异步加载,和图片的异步加载稍有不同,script的异步加载需要借助dom,因此有了局限性 <html> <head> <meta charset="utf-8" /> <title>Javascript</title> <meta http-equiv="X-UA-Compatible" content="IE=7"> </head&