原生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 相关文章推荐
火狐textarea输入法的bug的触发及解决
Jul 24 Javascript
对于Form表单reset方法的新认识
Mar 05 Javascript
javascript将相对路径转绝对路径示例
Mar 14 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
Mar 01 Javascript
基于MVC方式实现三级联动(JavaScript)
Jan 23 Javascript
原生JS 购物车及购物页面的cookie使用方法
Aug 21 Javascript
简单实现js上传文件功能
Aug 21 Javascript
vue通过路由实现页面刷新的方法
Jan 25 Javascript
layui-laydate时间日历控件使用方法详解
Nov 15 Javascript
详解puppeteer使用代理
Dec 27 Javascript
ES6入门教程之变量的解构赋值详解
Apr 13 Javascript
使用vant的地域控件追加全部选项
Nov 03 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初学者头疼十四条问题大总结
2008/11/12 PHP
JavaScript获取onclick、onchange等事件值的代码
2013/07/22 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
NodeJS Web应用监听sock文件实例
2015/02/18 NodeJs
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
js判断一个字符串是以某个字符串开头的简单实例
2016/12/27 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
vue 使用鼠标滚动加载数据的例子
2019/10/31 Javascript
浅谈小程序globalData的那些事儿
2019/11/01 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
python学生管理系统学习笔记
2019/03/19 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
Numpy与Pytorch 矩阵操作方式
2019/12/27 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
python中for in的用法详解
2020/04/17 Python
python 爬取小说并下载的示例
2020/12/07 Python
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
意大利网上药房:Farmacia 33
2020/01/27 全球购物
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
信息管理专业学生自荐信格式
2013/09/22 职场文书
酒店门卫岗位职责
2013/12/29 职场文书
详细的大学生创业计划书模板
2014/01/27 职场文书
CAD制图人员的自荐信
2014/02/07 职场文书
生产部厂长助理职位说明书
2014/03/03 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
表扬稿范文
2015/01/17 职场文书
2015年度考核个人工作总结
2015/10/24 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS
python高温预警数据获取实例
2022/07/23 Python
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS