原生JS实现动态加载js文件并在加载成功后执行回调函数的方法


Posted in Javascript onDecember 30, 2020

本文实例讲述了原生JS实现动态加载js文件并在加载成功后执行回调函数的方法。分享给大家供大家参考,具体如下:

有的时候需要动态加载一个javascript文件,并且在加载成功后执行回调函数(例如文件中保存了json数据之类的)。要实现这样的功能,可以使用<script> 元素的load 事件(IE9+、chrome、FireFox等)和onreadystatechange 事件(IE8以下),直接上代码:

function loadScript(src, callback) {
 var script = document.createElement('script'),
  head = document.getElementsByTagName('head')[0];
 script.type = 'text/javascript';
 script.charset = 'UTF-8';
 script.src = src;
 if (script.addEventListener) {
  script.addEventListener('load', function () {
   callback();
  }, false);
 } else if (script.attachEvent) {
  script.attachEvent('onreadystatechange', function () {
   var target = window.event.srcElement;
   if (target.readyState == 'loaded') {
    callback();
   }
  });
 }
 head.appendChild(script);
}

调用方法示例:

loadScript('http://cdn.staticfile.org/jquery/1.6.2/jquery.min.js',function(){
 console.log('onload');
});

运行后控制台输出onload,如下图所示:

原生JS实现动态加载js文件并在加载成功后执行回调函数的方法

补充一个函数

function sk_loadScript(url, callback) {
 var script = document.createElement("script");
 script.type = "text/javascript";
 if(typeof(callback) != "undefined"){
  if (script.readyState) {
   script.onreadystatechange = function () {
    if (script.readyState == "loaded" || script.readyState == "complete") {
     script.onreadystatechange = null;
     callback();
    }
   };
  } else {
   script.onload = function () {
    callback();
   };
  }
 }
 script.src = url;
 document.body.appendChild(script);
}

if(typeof jQuery=='undefined'){
	sk_loadScript("/comments/js/jquery.js",function(){
		sk_main();
	});
}else{
	sk_main();
}

上述代码感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具http://tools.3water.com/code/HtmlJsRun测试运行一下,看看运行结果如何。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
基于jQuery制作迷你背词汇工具
Jul 27 Javascript
js点击事件链接的问题解决
Apr 25 Javascript
JavaScript中的函数重载深入理解
Aug 04 Javascript
JavaScript实现节点的删除与序号重建实例
Aug 05 Javascript
javascript实现下拉提示选择框
Dec 29 Javascript
JS简单实现点击复制链接的方法
Aug 03 Javascript
微信小程序 图片边框解决方法
Jan 16 Javascript
JS中IP地址与整数相互转换的实现代码
Apr 10 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
Jul 03 Javascript
webpack4 处理CSS的方法示例
Sep 03 Javascript
VSCode插件安装完成后的配置(常用配置)
Aug 24 Javascript
vue组件vue-esign实现电子签名
Apr 21 Vue.js
微信小程序内拖动图片实现移动、放大、旋转的方法
Sep 04 #Javascript
JS中DOM元素的attribute与property属性示例详解
Sep 04 #Javascript
JavaScript使用indexOf()实现数组去重的方法分析
Sep 04 #Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
Sep 04 #Javascript
原生JS实现获取及修改CSS样式的方法
Sep 04 #Javascript
微信小程序canvas拖拽、截图组件功能
Sep 04 #Javascript
mpvue写一个CPASS小程序的示例
Sep 04 #Javascript
You might like
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
Js四则运算函数代码
2012/07/21 Javascript
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
2016/02/22 Javascript
js实现精确到秒的倒计时效果
2016/05/29 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
2016/07/07 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
2016/09/04 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
webpack引入eslint配置详解
2018/01/22 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
一款利用css3的鼠标经过动画显示详情特效的实例教程
2014/12/29 HTML / CSS
Edwaybuy西班牙:小米在线商店
2019/12/04 全球购物
大学同学聚会邀请函
2014/01/19 职场文书
上课说话检讨书大全
2014/01/22 职场文书
大学生家政服务项目创业计划书
2014/01/30 职场文书
信息总监管理职责范本
2014/03/08 职场文书
七夕情人节促销方案
2014/06/07 职场文书
公司踏青活动方案
2014/08/16 职场文书
检讨书范文500字
2015/01/28 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书
JavaScript 防篡改对象的用法示例
2021/04/24 Javascript
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL