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;

10.添加script标签,判断onload是否完成的更多相关文章

  1. 添加script标签、添加事件

    添加script标签 var _hmt = _hmt || [];    (function () {        var hm = document.createElement("scr ...

  2. 如何使用jQuery动态的在body里添加script标签?

    var script = document.createElement('script'); script.type = 'text/jacascript'; script.src = 'url'; ...

  3. js 引入外部文件之 script 标签

    在我的理解看来,html 就是一个单纯的管显示问题,js就是单纯的管动作问题,css就是单纯的管布局问题,这三个构成了一个网页 在HTML中,经常会用到引入js 文件. 引入js的方法很简单: 1. ...

  4. 移除script标签引起的兼容性问题

    一.应用场景: 有时候我们需要动态创建script标签实现脚本的按需加载,我们会为script标签绑定onload或者onreadystatechange事件,用于检测动态脚本是否加载并执行完毕,在事 ...

  5. <script>标签里的defer和async属性 区别(待补充)

    defer与async的区别(表格显示): table th:first-of-type { width: 150px; } table th:nth-of-type(2) { } 区别 defer ...

  6. 使用<script>标签在HTML网页中插入JavaScript代码

    新朋友你在哪里(如何插入JS) 我们来看看如何写入JS代码?你只需一步操作,使用<script>标签在HTML网页中插入JavaScript代码.注意, <script>标签要 ...

  7. 发布时一键添加html中的css标签和script标签版本号来防止浏览器缓存

    AppendFileVersion 是一个VSIX插件支持vs2015意以上版本 是我用来发布时一键添加html中的css标签和script标签版本号来防止浏览器缓存 分享给大家! download ...

  8. 如何将 JavaScript 代码添加到网页中,以及 <script> 标签的属性

    Hello, world! 本教程的这一部分内容是关于 JavaScript 语言本身的. 但是,我们需要一个工作环境来运行我们的脚本,由于本教程是在线的,所以浏览器是一个不错的选择.我们会尽可能少地 ...

  9. 微信页面script标签添加crossorigin=“anonymous”导致页面加载失败

    公司一个微信企业号项目,突然出现页面数据加载失败,页面报错信息如下 意思是前端向服务端发送跨域资源请求访问这个js文件,但是服务端并不同意,所以服务端拒绝访问这个地址. 后来发现将crossorigi ...

随机推荐

  1. 微信小程序分享转发用法大全——自定义分享、全局分享、组合分享

    官方提供的自定义分享 使用隐式页面配置函数实现的全局分享-推荐 使用隐式路由实现的全局分享-不推荐,仅供了解隐式路由 前言: 目前微信小程序只开放了页面自定义分享的API,为了能够更灵活的进行分享配置 ...

  2. tcp/ip面试题

    TCP协议  1.OSI与TCP/IP各层的结构和功能,协议和作用.     OSI七层模型对应TCP/IP四层模型,只是分法不同而已.     应用层:提供应用层服务,文件传输(FTP),电子邮件( ...

  3. 打造Worktile敏捷开发管理工具的思与惑

    从2019年初,我们团队准备开发一款适合研发团队使用的敏捷开发管理工具,那时候我们也在思考,到底什么样的工具才算是优秀的研发管理工具,研发管理的场景.方法和流派有很多,市面上关于研发管理工具的产品也是 ...

  4. 使用室内三维地图引擎ESMap来管理摄像头设备、消防设备和人员轨迹展示

    目前室内三维地图如何轻量化,能够在手机微信.电脑浏览器等平台快速显示地图,显示的地图性能好,转动地图不卡是大家都要面对的问题, 使用室内三维地图引擎ESMap后目前可以不用操心这方面的问题,开发只需要 ...

  5. 【webpack 系列】进阶篇

    本文将继续引入更多的 webpack 配置,建议先阅读[webpack 系列]基础篇的内容.如果发现文中有任何错误,请在评论区指正.本文所有代码都可在 github 找到. 打包多页应用 之前我们配置 ...

  6. Linux - Ubuntu18.04下更改apt源为阿里云源

    进入apt目录,备份原来的源地址 cd /etc/apt mv ./source.list ./source.list.bak 修改源文件source.list vim source.list 更换阿 ...

  7. pycharm 秘籍:快捷键技巧等

    Pycharm基本使用 安装 下载地址:https://www.jetbrains.com/pycharm/download 选择Professional 专业版 Comunnity社区版是免费的,但 ...

  8. LeetCode | 第180场周赛--5356矩阵中的幸运数

    给你一个 m * n 的矩阵,矩阵中的数字 各不相同 .请你按 任意 顺序返回矩阵中的所有幸运数. 幸运数是指矩阵中满足同时下列两个条件的元素: 在同一行的所有元素中最小 在同一列的所有元素中最大 示 ...

  9. 【JavaScript】js01

    一,javascript 历史. netscape -> 浏览器. -> livescript 微软 -> jscript netscape -> ecma 组织 -> ...

  10. (js描述的)数据结构 [数组的一些补充](1)

    (js描述的)数据结构 [数组的一些补充](1) 1. js的数组: 1.优点:高度封装,对于数组的操作就是调用API 2.普通语言的数组: 1.优点:根据index来查询,修改数据效率很高 2.缺点 ...