原生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 相关文章推荐
Ext javascript建立超链接,进行事件处理的实现方法
Mar 22 Javascript
jQuery EasyUI API 中文文档 - Draggable 可拖拽
Sep 29 Javascript
javascript 基础篇3 类,回调函数,内置对象,事件处理
Mar 14 Javascript
jQuery 数据缓存模块进化史详细介绍
Nov 19 Javascript
JavaScript对象数组排序实例方法浅析
Jun 15 Javascript
js控制div层的叠加简单方法
Oct 15 Javascript
node+koa实现数据mock接口的方法
Sep 20 Javascript
完美解决iview 的select下拉框选项错位的问题
Mar 02 Javascript
浅谈Node 调试工具入门教程
Mar 20 Javascript
浅谈js中的bind
Mar 18 Javascript
微信公众号生成新浪短网址的实现(快速生成)
Aug 18 Javascript
js实现div色块碰撞
Jan 16 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
php基于session实现数据库交互的类实例
2015/08/03 PHP
javascript入门·对象属性方法大总结
2007/10/01 Javascript
一行代码告别document.getElementById
2012/06/01 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
2013/11/22 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
详解node单线程实现高并发原理与node异步I/O
2017/09/21 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
2018/07/03 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
小程序实现上下切换位置
2020/11/16 Javascript
Python的迭代器和生成器使用实例
2015/01/14 Python
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
python简单实现基数排序算法
2015/05/16 Python
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
Numpy之文件存取的示例代码
2018/08/03 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
Python学习笔记之Django创建第一个数据库模型的方法
2019/08/07 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
python判断正负数方式
2020/06/03 Python
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
好矿嫂事迹材料
2014/01/21 职场文书
保护地球的标语
2014/06/17 职场文书
中职生求职信
2014/07/01 职场文书
2014年教学工作总结
2014/11/13 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
投资合作意向书范本
2015/05/08 职场文书
2015年手术室工作总结
2015/05/11 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技