zoukankan      html  css  js  c++  java
  • JavaScript异步加载方案

    (1) defer,只支持IE 
    defer属性的定义和用法(我摘自w3school网站) 
    defer 属性规定是否对脚本执行进行延迟,直到页面加载为止。 
    有的 javascript 脚本 document.write 方法来创建当前的文档内容,其他脚本就不一定是了。 

    如果您的脚本不会改变文档的内容,可将 defer 属性加入到 <script> 标签中,以便加快处理文档的速度。因为浏览器知道它将能够安全地读取文档的剩余部分而不用执行脚本,它将推迟对脚本的解释,直到文档已经显示给用户为止。 

    alert(document.getElementById("p1").firstChild.nodeValue);  

    (2) async: 
    async的定义和用法(是HTML5的属性) 
    async 属性规定一旦脚本可用,则会异步执行。 

     <script type="text/javascript" src="demo_async.js" async="async"></script> 

    注释:async 属性仅适用于外部脚本(只有在使用 src 属性时)。 
    注释:有多种执行外部脚本的方法: 
    •如果 async="async":脚本相对于页面的其余部分异步地执行(当页面继续进行解析时,脚本将被执行) 
    •如果不使用 async 且 defer="defer":脚本将在页面完成解析时执行 
    •如果既不使用 async 也不使用 defer:在浏览器继续解析页面之前,立即读取并执行脚本 

    (3) 创建script,插入到DOM中,加载完毕后callBack,见代码: 

     1 <script type="text/javascript">
     2     function loadScript(url, callback) {
     3     var script = document.createElement_x("script")
     4     script.type = "text/javascript";
     5     if (script.readyState) { //IE 
     6         script.onreadystatechange = function() {
     7             if (script.readyState == "loaded" ||
     8                 script.readyState == "complete") {
     9                 script.onreadystatechange = null;
    10                 callback();
    11             }
    12         };
    13     } else { //Others: Firefox, Safari, Chrome, and Opera 
    14         script.onload = function() {
    15             callback();
    16         };
    17     }
    18     script.src = url;
    19     document.body.appendChild(script);
    20     }
    21 </script>
  • 相关阅读:
    C#第十六节课
    Hadoop系列(三):hadoop基本测试
    Hadoop系列(二):Hadoop单节点部署
    Hadoop系列(一):Hadoop集群搭建
    Stars project
    Tornado实现多进程/多线程的HTTP服务
    python paramiko模块
    爬虫代理
    tornado之用户验证装饰器
    tornado自定义session
  • 原文地址:https://www.cnblogs.com/Iona/p/4771066.html
Copyright © 2011-2022 走看看