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. //synchronization
  38. //同步加载多个脚本
  39. static syncLoadScripts(scripts, callback)
  40. {
  41. var ok = 0;
  42. var loadScript = function(url) {
  43. Tools.loadScript(url, function(){
  44. ok++;
  45. // console.log("init:" + url)
  46. if (ok == scripts.length) {
  47. callback();
  48. }
  49. else {
  50. loadScript(scripts[ok])
  51. }
  52. })
  53. }
  54. loadScript(scripts[0]);
  55. }
  56. //asynchronization
  57. //异步加载多个脚本
  58. static asyncLoadScripts(scripts, callback)
  59. {
  60. var ok = 0;
  61. for (var i=0; i < scripts.length; i++) {
  62. Tools.loadScript(scripts[i], function() {
  63. console.log(scripts[ok])
  64. ok++;
  65. if (ok==scripts.length)
  66. {
  67. callback();
  68. }
  69. })
  70. }
  71. }
  72. }
  73. export default Tools;

最新文章

  1. 【原生态】Http请求数据 与 发送数据
  2. Python 中的虚拟环境
  3. 史航第12次作业&amp;总结
  4. 利用HTML5云存储实现模拟对比投票效果
  5. LoaderManager使用详解(三)---实现Loaders
  6. 微信公众号与HTML 5混合模式揭秘1——如何部署JSSDK
  7. 64位Python安装PIL
  8. 数组中所有重复次数大于等于minTimes的数字
  9. iOS对textField进行字符长度限制的办法
  10. ReactJS.NET
  11. 201521123002《Java程序设计》第14周学习总结
  12. makefile(一)
  13. IDEA 创建和使用tomcat
  14. NOI2017 游记
  15. Can&#39;t locate find.pl in @INC (@INC contains: /etc/perl xxxx) at perlpath.pl line 7.
  16. boost json序列化
  17. CTreeCtrl和CListCtrl失去焦点时高亮选中项
  18. java web启动后执行初始化任务
  19. 『PyTorch』第十三弹_torch.nn.init参数初始化
  20. Python 使用 Redis 操作

热门文章

  1. Linux常用的命令收藏
  2. varchar int 查询 到底什么情况下走索引?
  3. fastai 官方教程之查看数据
  4. 使用PyTorch进行情侣幸福度测试指南
  5. Error response from daemon: rpc error: code = AlreadyExists desc = name conflicts with an existing object: service myweb already exists
  6. 好记性-烂笔头:JDK8流操作
  7. eureka和zookeeper注册中心的区别
  8. Mac word文档的消失问题以及解决方案
  9. 关于java动态代理模式
  10. 别人家的 InfluxDB 实战 + 源码剖析