判断JS是否加载完成

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

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

我们使用document的readyState属性:document.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()
        }
      }
    }

你可能感兴趣的:(js,javascript,前端,html)