原生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简单实现图片切换效果的方法
May 12 Javascript
JavaScript如何动态创建table表格
Aug 02 Javascript
JS代码防止SQL注入的方法(超简单)
Apr 12 Javascript
D3.js实现柱状图的方法详解
Sep 21 Javascript
vue.js初学入门教程(1)
Nov 03 Javascript
javascript 封装Date日期类实例详解
May 28 Javascript
微信小程序canvas写字板效果及实例
Jun 15 Javascript
Textarea输入字数限制实例(兼容iOS&amp;安卓)
Jul 06 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
Jul 03 Javascript
微信小程序—setTimeOut定时器的问题及解决
Jul 26 Javascript
JavaScript使用localStorage存储数据
Sep 25 Javascript
JS控制只能输入数字并且最多允许小数点两位
Nov 24 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
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
Sony CFR 320 修复改造
2020/03/14 无线电
融入意大利的咖啡文化
2021/03/03 咖啡文化
php实现的仿阿里巴巴实现同类产品翻页
2009/12/11 PHP
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
php获取远程文件大小
2015/10/20 PHP
PHP微信H5支付开发实例
2018/07/25 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
jQuery中live()方法用法实例
2015/01/19 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
js canvas实现星空连线背景特效
2019/11/01 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
Python环境变量设置方法
2016/08/28 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
使用PyQt4 设置TextEdit背景的方法
2019/06/14 Python
新手入门Python编程的8个实用建议
2019/07/12 Python
python中return的返回和执行实例
2019/12/24 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
2020/03/06 Python
python pillow库的基础使用教程
2021/01/13 Python
详解使用python爬取抖音app视频(appium可以操控手机)
2021/01/26 Python
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
正宗的日本零食和糖果订阅盒:Bokksu
2019/11/21 全球购物
优秀英语专业毕业生求职信
2013/11/23 职场文书
中学教师培训制度
2014/01/31 职场文书
激励口号大全
2014/06/17 职场文书
公司搬迁通知
2015/04/20 职场文书
城南旧事读书笔记
2015/06/29 职场文书
PHP实现两种排课方式
2021/06/26 PHP
MySQL创建管理RANGE分区
2022/04/13 MySQL