原生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 相关文章推荐
js根据给定的日期计算当月有多少天实现思路及代码
Feb 25 Javascript
js点击更换背景颜色或图片的实例代码
Jun 25 Javascript
js调试系列 初识控制台
Jun 18 Javascript
javascript中Math.random()使用详解
Apr 15 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
Dec 02 Javascript
详解js中的apply与call的用法
Jul 30 Javascript
js实现文字跑马灯效果
Feb 23 Javascript
JS基于正则表达式的替换操作(replace)用法示例
Apr 28 Javascript
JS实现合并json对象的方法
Oct 10 Javascript
jquery轻量级数字动画插件countUp.js使用详解
Oct 17 jQuery
js实现圆形显示鼠标单击位置
Feb 11 Javascript
ES6函数和数组用法实例分析
May 23 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
BBS(php &amp; mysql)完整版(一)
2006/10/09 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
PHP中COOKIES使用示例
2015/07/26 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
jquery向.ashx文件post中文乱码问题的解决方法
2011/03/28 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
《JavaScript函数式编程》读后感
2015/08/07 Javascript
js变量提升深入理解
2016/09/16 Javascript
详谈Angular路由与Nodejs路由的区别
2017/03/05 NodeJs
解决vue-cli中stylus无法使用的问题方法
2017/06/19 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
vue实现下载文件流完整前后端代码
2020/11/17 Vue.js
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
Python的Flask框架与数据库连接的教程
2015/04/20 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
python sys.argv[]用法实例详解
2018/05/25 Python
python实现pdf转换成word/txt纯文本文件
2018/06/07 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
Python求正态分布曲线下面积实例
2019/11/20 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
python opencv实现信用卡的数字识别
2020/01/12 Python
PyTorch的torch.cat用法
2020/06/28 Python
Django封装交互接口代码
2020/07/12 Python
办公室主任先进事迹
2014/01/18 职场文书
优秀幼教自荐信
2014/02/03 职场文书
函授毕业自我鉴定
2014/02/04 职场文书
保护环境倡议书500字
2014/05/19 职场文书
教师个人年终总结
2015/02/11 职场文书
Node与Python 双向通信的实现代码
2021/07/16 Javascript
Python超详细分步解析随机漫步
2022/03/17 Python