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. sql 模块sqllit

    1.创建数据库表 面对 SQLite 数据库,我们之前熟悉的 SQL 指令都可以用: >>> create_table = "create table books (tit ...

  2. python ——钟表

    1.表盘 from turtle import * from datetime import * def Skip(step):#表盘不连续地画图 penup() forward(step) pend ...

  3. 在ASP.NET Core中创建基于Quartz.NET托管服务轻松实现作业调度

    在这篇文章中,我将介绍如何使用ASP.NET Core托管服务运行Quartz.NET作业.这样的好处是我们可以在应用程序启动和停止时很方便的来控制我们的Job的运行状态.接下来我将演示如何创建一个简 ...

  4. 消息队列 NSQ 源码学习笔记 (一)

    nsqlookupd 用于Topic, Channel, Node 三类信息的一致性分发 概要 nsqlookup 知识点总结 功能定位 为node 节点和客户端节点提供一致的topic, chann ...

  5. 【Java技术系列】爱情36技之记忆永存

    1.  关注“一猿小讲”的伙伴们都清楚,Java 那小子带着心爱的 Python 菇凉,去了一趟浪漫的土耳其,然后一起又去了东京和巴黎,接着 Python 菇凉自己又去了云南的大理. 就在昨天,Pyt ...

  6. Light of future-冲刺Day 6

    目录 1.SCRUM部分: 每个成员进度 SCRUM 会议的照片 签入记录 代码运行截图 用户浏览界面 订单详情界面 管理员浏览界面 新增后台界面 2.PM 报告: 时间表 燃尽图 任务总量变化曲线 ...

  7. rem布局和使用js rem动态改变字体大小,自适应

    解决rem文字动态改变字体大小: <script> console.log(window.devicePixelRatio); var iScale = 1; iScale = iScal ...

  8. 痞子衡嵌入式:走进二维码(QR Code)的世界(1)- 引言

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是走进二维码(QR Code)的世界专题的引言. 如今二维码可以说是深入走进大家的生活了,推送名片.扫码支付都离不开它,大家几乎每天都会和 ...

  9. 数据库服务概述,构建MYSQL服务器,数据库基本管理,mysql数据类型,表结构的调整

                                                            数据库的发展前引 MySQL的起源与发展过程 最为著名.应用最广泛的开源数据库软件 最早 ...

  10. Git应用详解第三讲:本地分支的重要操作

    前言 前情提要:Git应用详解第二讲:Git删除.修改.撤销操作 分支是git最核心的操作之一,了解分支的基本操作能够大大提高项目开发的效率.这一讲就来介绍一些分支的常见操作及其基本原理. 一.分支概 ...