原生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 相关文章推荐
两个SUBMIT按钮,如何区分处理
Aug 22 Javascript
JavaScript 页面坐标相关知识整理
Jan 09 Javascript
javascript 特性检测并非浏览器检测
Jan 15 Javascript
window.location 对象所包含的属性
Oct 10 Javascript
jQuery实现二级下拉菜单效果
Jan 05 Javascript
微信小程序加载更多 点击查看更多
Nov 29 Javascript
解析Javascript单例模式概念与实例
Dec 05 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
Apr 18 Javascript
JS实现改变HTML上文字颜色和内容的方法
Dec 30 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
Nov 15 Javascript
js实现继承的方法及优缺点总结
May 08 Javascript
微信小程序实现授权登录
May 15 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 selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
深入浅析PHP的session反序列化漏洞问题
2017/06/15 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
2019/07/09 PHP
JavaScript中获取元素索引的函数
2010/09/10 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
Jquery写一个鼠标拖动效果实现原理与代码
2012/12/24 Javascript
JavaScript获取和设置CheckBox状态的简单方法
2013/07/05 Javascript
Javascript this 关键字 详解
2014/10/22 Javascript
javascript使用prototype完成单继承
2014/12/24 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
2018/11/26 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
2019/10/23 Javascript
Vue 组件复用多次自定义参数操作
2020/07/27 Javascript
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
python提取照片坐标信息的实例代码
2019/08/14 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
基于selenium及python实现下拉选项定位select
2020/07/22 Python
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
关于迟到的检讨书
2014/01/26 职场文书
农村结婚典礼司仪主持词
2014/03/14 职场文书
幼儿园教师自我鉴定
2014/03/20 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
三年级学生评语大全
2014/12/26 职场文书
店铺转让协议书
2015/01/29 职场文书
张丽莉观后感
2015/06/16 职场文书
离职告别感言
2015/08/04 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
JavaScript实现队列结构过程
2021/12/06 Javascript