判断JS是否加载完成

Posted xixi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断JS是否加载完成相关的知识,希望对你有一定的参考价值。

  在正常的加载过程中,js的加载都是同步的,也就是在加载过程中,浏览器会阻塞接下来的内容的加载。这时候我们就要用到动态加载,动态加载是异步的,如果我们在后边要用到这个动态加载的js文件里的东西,就要保证这个文件加载完成后,再执行下面的内容。

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

我们使用document的readyState属性:document.readyState

  readyState 属性返回当前文档的状态。

  该属性返回以下值:

  • uninitialized - 还未开始载入
  • loading - 载入中
  • interactive - 已加载,文档与用户可以开始交互
  • complete - 载入完成  (loaded)

原生JS:

function loadScript(url,callback){
  var script=document.createElement(‘script‘);
    script.type=‘text/javascript‘;
    script.async=‘async‘;
    script.src=url;
    document.body.appendChild(script);
    if(script.readyState){ //IE
      script.onreadystatechange=function(){
        if(script.readyState==‘complete‘||script.readyState==‘loaded‘){
          script.onreadystatechange=null;
          callback();
        }
      }
    }else{ //非IE
      script.onload=function(){callback();}
    }
}

Jquery:使用 $.holdReady(true);  $.getScript();   $.holdReady(false)   3个函数实现

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

$.holdReady()函数表示 延迟加载。

 

以上是关于判断JS是否加载完成的主要内容,如果未能解决你的问题,请参考以下文章

如何判断网页是不是加载完毕

判断JS是否加载完成

js判断页面是否加载完成

js判断异步引入的js文件是否加载完毕

js判断flash文件是否加载完毕

如何判断调用的外部JS文件加载完成?