JS之异步加载

   javascript 异步加载的三种方案
1.defer 异步加载,但要等到dom文档全部解析完才会被执行。只有IE能用。
2.async 异步加载,加载完就执行,async只能加载外部脚本,不能把js写在script 标签里。
    1.2 执行时也不阻塞页面                 当想同时兼容IE和其它浏览器该怎么写?
3.创建script,插入到DOM中,加载完毕后callBack
w3c方法:
  <script src="demo.js" aysnc="aysnc"></script> // w3c标准方法,能在标签里写代码
IE方法:
  <script src="demo.js" defer="defer"></script> //异步加载 只能ie能用,不能在标签里写代码
想让任何浏览器兼容同一个文件,应该怎么写?
  <script src="demo.js" defer="defer"></script>
  <script src="demo.js" aysnc="aysnc"></script>
这样写会起冲突,async加载完立马会异步执行,defer执行完后会等到文档解析完才执行,它们不一定谁先加载,加载完之后代码会出现覆盖现象。
也可以按第三种方案,按需加载。   
  demo2.js文件
  function test(){
    console.log(a);
}
 
<script>
  var script = document.createElement('script');   //创建
  script.type = 'text/javascript';          //设置
  var src = "dmeo2.js";             //下载文件,当下载时它会发送请求,发请求过程中,页面已经解析完,系统解析很速度很快 ps:引入dmeo2.js文件
  document.head.appendChild;         //以下两行,不会执行到,所以会报test未定义
  test();
</script>
window有一种提示机制,onload事件。当触发onload就说明下载完了。

猜你喜欢

转载自www.cnblogs.com/combating/p/10799918.html