zoukankan      html  css  js  c++  java
  • 10.添加script标签,判断onload是否完成

    1. class Tools  
    2. {  
    3.     static loadScript(url, callback)  
    4.     {  
    5.         let old_script = document.getElementById(url);  
    6.         if (old_script)  
    7.         {  
    8.             if (old_script.ready == true)  
    9.             {  
    10.                 // console.log("INFO:already load:" + url);  
    11.                 callback();  
    12.                 return;  
    13.             }  
    14.             else  
    15.             {  
    16.                 document.body.removeChild(old_script);  
    17.                 // console.log("INFO:remove an old script that not ready:" + url);  
    18.             }  
    19.         }  
    20.         let script = document.createElement('script');  
    21.         script.id = url;  
    22.         script.src = url;  
    23.         script.onload = script.onreadystatechange = function() {  
    24.             if (script.ready) {  
    25.                 return false;  
    26.             }  
    27.             if (!script.readyState //这是FF的判断语句,因为ff下没有readyState这个值,IE的readyState肯定有值  
    28.                 || script.readyState == "loaded" || script.readyState == 'complete' // 这是IE的判断语句  
    29.             ) {  
    30.                 // console.log("INFO:load:" + url);  
    31.                 script.ready = true;  
    32.                 callback();  
    33.             }  
    34.         };  
    35.         document.body.appendChild(script);  
    36.     }  
    37.   
    38.     //synchronization  
    39.     //同步加载多个脚本  
    40.     static syncLoadScripts(scripts, callback)  
    41.     {  
    42.         var ok = 0;  
    43.         var loadScript = function(url) {  
    44.             Tools.loadScript(url, function(){  
    45.                 ok++;  
    46.                 // console.log("init:" + url)  
    47.                 if (ok == scripts.length) {  
    48.                     callback();  
    49.                 }  
    50.                 else {  
    51.                     loadScript(scripts[ok])  
    52.                 }  
    53.             })  
    54.         }  
    55.         loadScript(scripts[0]);  
    56.     }  
    57.   
    58.     //asynchronization  
    59.     //异步加载多个脚本  
    60.     static asyncLoadScripts(scripts, callback)  
    61.     {  
    62.         var ok = 0;  
    63.         for (var i=0; i < scripts.length; i++) {  
    64.             Tools.loadScript(scripts[i], function() {  
    65.                 console.log(scripts[ok])  
    66.                 ok++;  
    67.                 if (ok==scripts.length)  
    68.                 {  
    69.                     callback();  
    70.                 }  
    71.             })  
    72.         }  
    73.     }  
    74. }  
    75.   
    76. export default Tools;  
  • 相关阅读:
    监督学习——决策树理论与实践(上):分类决策树
    监督学习——随机梯度下降算法(sgd)和批梯度下降算法(bgd)
    Protobuf 从入门到实战
    Android 广播机制
    Java 并发编程——volatile/synchronized
    Android 手势识别—缩放
    Jquery 使用和Jquery选择器
    初识jQuery
    正则表达式
    正则表达式
  • 原文地址:https://www.cnblogs.com/wangrui38/p/9181633.html
Copyright © 2011-2022 走看看