zoukankan      html  css  js  c++  java
  • 判断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()函数表示 延迟加载。

  • 相关阅读:
    服务器组件
    SQLAlchemy
    SessionMiddleware源码分析
    java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题
    linux 实现自动创建ftp用户并创建文件夹
    window server 2008 配置ftp并实现用户隔离
    centos 6.5配置ftp服务器,亲测可用
    learnyounode 题解
    [写出来才有价值系列:node.js]node.js 02-,learnyounode
    Linux多台机器配置ssh免登录
  • 原文地址:https://www.cnblogs.com/telnetzhang/p/5827791.html
Copyright © 2011-2022 走看看