js动态加载

发布时间 2023-12-17 21:15:33作者: justSmile2
<script type="text/javascript">
  // 动态加载js(顺序执行js)
  function loadScript(url, callback) {
    var script = document.createElement("script")
    script.type = "text/javascript";
    if (script.readyState) { //IE 
      script.onreadystatechange = function () {
        if (script.readyState == "loaded" || script.readyState == "complete") {
          script.onreadystatechange = null;
          callback();
        }
      };
    } else { //Others 
      script.onload = function () {
        callback();
      };
    }
    script.src = url;
    document.querySelectorAll("head")[0].appendChild(script);
  };
  loadScript("file1.js", function () {
    alert("File is loaded!");
  });


  loadScript("file1.js", function () {
    loadScript("file2.js", function () {
      loadScript("file3.js", function () {
        alert("All files are loaded!");
      });
    });
  });

  // 脚本注入
  var xhr = new XMLHttpRequest();
  xhr.open("get", "file1.js", true);
  xhr.onreadystatechange = function () {
    if (xhr.readyState == 4) {
      if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304) {
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.text = xhr.responseText;
        document.body.appendChild(script);
      }
    }
  };
  xhr.send(null);
</script>