在正常的加载过程中,js的加载都是同步的,也就是在加载过程中,浏览器会阻塞接下来的内容的加载。

但有时候我们需要加载完JS后,执行某个函数。这时候我们就要用到动态加载,动态加载是异步的,如果我们在后边要用到这个动态加载的js文件里的东西,就要保证这个文件加载完成后,再执行下面的内容。

如何判断js是否加载完成?(实现loadScript(url,callback)异步加载脚本,完成后执行回调函数,要求支持IE)

我们使用document的readyState属性:document.readyState
 readyState 属性返回当前文档的状态。
 该属性返回以下值:
   uninitialized - 还未开始载入
   loading - 载入中
   interactive - 已加载,文档与用户可以开始交互
   complete - 载入完成 (loaded)

执行函数代码:

function loadScript(url,callback){//如果有该JS,则移出该JSdocument.getElementById('') && document.getElementById('').remove();var script=document.createElement('script');script.type='text/javascript';script.async='async';script.src=url;//该ID放入上方的判断内 script.id = ""var head = document.head || document.getElementsByTagName('head')[0];head.appendChild(script);//或者放在body尾部document.body.appendChild(script);if(script.readyState){//IEscript.onreadystatechange=function(){if(script.readyState=='complete'||script.readyState=='loaded'){script.onreadystatechange=null;callback();}}}else{//非IEscript.onload=function(){callback();}}
}

Jquery:使用 $.holdReady(true); $.getScript(); $.holdReady(false) 3个函数实现
$.holdReady()函数表示 延迟加载

$.holdReady(true);    //hold住,等待a.js加载,后续代码不能执行
$.getScript('a.js',function(){$.holdReady(false);     //释放,a.js加载完成,继续执行后续代码
});

动态加载JS后执行后续文件相关推荐

  1. html动态加载js方法,原生JS实现动态加载js文件并在加载成功后执行回调函数的方法...

    本文实例讲述了原生JS实现动态加载js文件并在加载成功后执行回调函数的方法.分享给大家供大家参考,具体如下: 有的时候需要动态加载一个javascript文件,并且在加载成功后执行回调函数(例如文件中 ...

  2. php动态页面加载慢,通过动态加载JS文件提升网站访问速度

    相对与HTML,CSS,javascript是最影响浏览器性能的,因为浏览器在遇到<script>标签时,必须等待js代码下载和执行完毕后再执行后面的内容,因此当页面中js文件过多时,网站 ...

  3. 动态加载js如何保证顺序执行?

    我们知道,可以使用创建script标签的方法来动态加载js文件. 但随之带来问题,如果创建多个script标签来加载多个js文件,这些文件是异步并行加载的,默认添加了async属性,最后执行顺序不能保 ...

  4. js动态载入css文件,原生JS动态加载JS、CSS文件及代码脚本(示例代码)

    var DynamciLoadUtil = { // 动态加载外部js文件,并执行回调 loadJS: function(url, callback){ var script = document.c ...

  5. JavaScript 之 动态加载JS代码或JS文件

    2.动态加载JS文件 <script type="text/javascript"> function loadScript(url, callback) { var ...

  6. js 和jQuery(自动执行函数)立即执行函数和页面加载完后执行函数写法

    js 立即执行函数的写法. js 立即执行函数只能用于匿名函数,如果声明了函数名是不可以用立即执行的,通常在函数表达式后加一对小括号()用于立即执行 如果想让函数不被调用的情况下,立即自动执行,需要在 ...

  7. ExtJS4.x动态加载js文件

    动态加载js文件是ext4.x的一个新特性,可以有效的减少浏览器的压力,提高渲染速度.如动态加载自定义组件 1.在js/extjs/ux目录下,建立自定义组件的js文件. 2.编写MyWindow.j ...

  8. JavaScript动态加载js文件

    /********************************************************************** JavaScript动态加载js文件* 说明:* 之前没 ...

  9. 动态加载js文件是异步的

    动态加载js文件是异步的. 今天调试一个错误,一个js方法各种调不到. 原因是因为所调方法的js文件是动态加载进来的. <script type="text/javascript&qu ...

最新文章

  1. windows7 64位操作系统上使vs2010和vs2013能够并存的处理方法
  2. Eclipse安装Database Development插件。
  3. 初识莫队——小Z的袜子
  4. 几种常用控件的使用方法
  5. java 存储png文件_vue图片上传及java存储图片(亲测可用)
  6. windows系统托盘tray
  7. (47)fs创建多级目录
  8. postgresql 集合类型_PostgreSQL 分组集合新功能(GROUPING SETS,CUBE,ROLLUP)
  9. SpringCloud微服务详细流程
  10. FFMPEG开源音视频项目学习汇总
  11. python一行输出多个数据_python实现一行输入多个值和一行输出多个值的例子
  12. louvain算法python_python – 如何在igraph中运行louvain社区检测算法?
  13. 现代计算机的存储体系 (转载)
  14. 任务含有时间窗与资源含有上下班时间的时间冲突约束构建思路
  15. Exosip源码学习
  16. java栈和队列的区别是什么意思_java中的栈和队列有什么区别
  17. android 键盘快捷键大全,[键盘快捷键使用大全]AndroidStudio 快捷键使用总结大全.doc...
  18. 1334: PIPI计数
  19. 20165219王彦博第一周学习总结
  20. python3可视化-pyecharts图形库,利用Map进行地图的创建和使用

热门文章

  1. 情人节拷问:恋爱都谈不好,还谈什么客户?
  2. C++之execlp函数用法
  3. 电路中的0欧姆电阻究竟是干什么用的?——0欧姆电阻的一些用法解释
  4. NB | 使用自动化和机器学习的高通量微生物培养组学
  5. 用c语言判断日期合法性
  6. 教你如何让Redis更持久 !
  7. linux系统僵尸进程杀死,如何在Linux上杀死僵尸进程
  8. 使用Hexo+Github+腾讯云+Netlify搭建个人博客
  9. 10块钱怎么较为平均分给三个人
  10. 8个免费高速文件传输工具,让你彻底告别网盘和数据线