首页 >

如何异步加载js?异步加载js办法介绍

web前端|js教程如何异步加载js?异步加载js办法介绍
js,异步加载
web前端-js教程
如何异步加载js?本篇文章就给大家介绍三种异步加载js的方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。【视频教学推荐:JavaScript视频教学】
猿题库源码,xmake-vscode,ubuntu电脑录屏怎么录,tomcat6.036,xe6 sqlite,秒杀插件 折扣,金航数码的前端框架,公交车数据爬虫,php .do,seo番外篇,多奥淘宝客网站,自适应视频网页代码,最简洁的简历模板,计算rcs matlab程序lzw
js加载时间线
支付宝免签约网站源码,iwork8Ubuntu,设置tomcat控制台,爬虫保存进度,电子处方系统源码php,seo baklzw
它是根据js出生的那一刻开始记录的一系列浏览器按照顺序做的事,形容的就是加载顺序,可以用来优化什么东西,理论基础,背下来.
仿雨林木风官网源码,vscode怎么运行断点,ubuntu破解clion,tomcat被自动kill,sqlite数据库工具密码,用爬虫爬取网站文章答辩论文,apache2 php7,咸宁seo排名技术厂家,网站分类目录系统,html模板网站lzw
1、创建Document对象,开始解析web页面。解析HTML元素和他们的文本内容后添加Element对象和Text节点到文档中。这个阶段document.readyState = ‘loading’。(生成document对象,document状态位变为loading)

2、遇到link外部css,创建线程加载,并继续解析文档。

3、遇到script外部js,并且没有设置async、defer,浏览器加载,并阻塞,等待js加载完成并执行该脚本,然后继续解析文档。

4、遇到script外部js,并且设置有async、defer,浏览器创建线程加载,并继续解析文档。 对于async属性的脚本,脚本加载完成后立即执行。(异步禁止使用document.write())

document.write():特别特殊他是把里面的东西当成HTML文档输出到页面里去,但是有一点就是,有的时候,当你整个文档全部都解析的差不多的时候再用document.write()的话会把你之前所有的文档流都清空,用它里面的文档流代替

例:整个页面只显示a,这里的document.write();在这里有消除文档流的功能,连script都消除了。

    window.onload = function(){        document.write('a');    }

5、遇到img等,先正常解析dom结构,然后浏览器异步加载src,并继续解析文档。

6、当文档解析完成,document.readyState = ‘interactive’。

先解析完,再加载完,然后状态位变为interactive(活跃)

查看状态位的转换:

console.log(document.readyState);document.onreadystatechange = function(){     console.log(document.readyState);}

7、文档解析完成后,所有设置有defer的脚本会按照顺序执行。(注意与async的不同,但同样禁止使用(document.write());

8、document对象触发DOMContentLoaded事件,这也标志着程序执行从同步脚本执行阶段,转化为事件驱动阶段。

例1:同时打印出a和complete,而且onDOMContentLoaded是不好使的,只有绑定在addEventListener才好用。

console.log(document.readyState);document.onreadystatechange = function(){     console.log(document.readyState);}document.addEventListener('DOMContentLoaded',function(){      console.log('a');},false)

例2:window.onload和下面这个的区别

$(document).ready(function(){    //当DOM解析完就执行的部分(不用加载完,加载完是给用户看的,对于我们来说解析完就可以操作了)    /*它的原理就是interactive和DOMContentLoaded事件*/})

区别就是:window.onload满需要都加载完,但是它解析完就可以操作了(这是jQuery的方法)

例3:当把script放在上面时候最好这样写,不要写onload,千万不要写onload,但是最好的方法还是写在下面

        lottery            document.addEventListener('DOMContentLoaded',function(){            var p = document.getElementsByTagName('p')[0];            console.log(p);        },false)        script标签写在上面又能处理下面的代码,而且效率还高,因为登高DOM解析完就执行,而不是DOM加载完//script标签写在上面又能处理下面的代码,而且效率还高,因为登高DOM解析完就执行,而不是DOM加载完

9、当所有async的脚本加载完成并执行后、img等加载完成后,document.readyState = ‘complete’,window对象触发load事件。

10、从此,以异步响应方式处理用户输入、网络事件等。
总结就是三个点:先生成document对象,代表js可以运行了,第二步就是文档解析完了,第三步就是文档加载完了并且执行完了


下面我们看看异步加载js的三种方式:

异步加载js的方法:

1)、async HTML5的属性,让JavaScript代码进行异步加载

2)defer 老版本IE专用

3)动态的创建script的标签(可以解决兼容h5以及低版本ie的问题),代码如下:

            function asyncLoaded(url,callback){var script = document.createElement("script");//script.src = url;   假如说网速非常好,直接执行完成了,后面就监听不到状态的改变了if(script.readyState){    script.onreadystatechange = function(){        if(script.readyState == "complete" || script.readyState =="loaded"){//            执行某个函数            callback()        }    }}else{    script.onload = function(){//        执行某个函数        callback()    }}script.src = url;    //异步的过程document.head.appendChild(script)                }            asyncLoaded("05.js",function(){fn()          //05.js中的函数            })        

如何异步加载js?异步加载js办法介绍
  • struts2+jquery+json实现异步加载数据(自写)【jquery】
  • struts2+jquery+json实现异步加载数据(自写)【jquery】 | struts2+jquery+json实现异步加载数据(自写)【jquery】 ...

    如何异步加载js?异步加载js办法介绍
  • 异步加载技术实现当滚动条到最底部的瀑布流效果,异步滚动条
  • 异步加载技术实现当滚动条到最底部的瀑布流效果,异步滚动条 | 异步加载技术实现当滚动条到最底部的瀑布流效果,异步滚动条 ...

    如何异步加载js?异步加载js办法介绍
  • JQuery ztree 异步加载实例讲解【jquery】
  • JQuery ztree 异步加载实例讲解【jquery】 | JQuery ztree 异步加载实例讲解【jquery】 ...