原生JS实现动态加载js文件并在加载成功后执行回调函数的方法

 更新时间:2020年12月30日 13:04:39   作者:webarn  
这篇文章主要介绍了原生JS实现动态加载js文件并在加载成功后执行回调函数的方法,涉及javascript动态创建页面元素、事件监听、回调函数使用等相关操作技巧,需要的朋友可以参考下

本文实例讲述了原生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,如下图所示:

补充一个函数

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.jb51.net/code/HtmlJsRun测试运行一下,看看运行结果如何。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript文件与目录操作技巧汇总》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript错误与调试技巧总结》及《JavaScript数学运算用法总结

希望本文所述对大家JavaScript程序设计有所帮助。

相关文章

  • echarts学习笔记之图表自适应问题详解

    echarts学习笔记之图表自适应问题详解

    最近发现一个问题,echarts图初始化后不能自适应浏览器的缩放,所以下面这篇文章就来给大家介绍了关于echarts图表自适应问题的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11
  • 详解JavaScript中var和let的区别

    详解JavaScript中var和let的区别

    在JavaScript中,有3个关键字可以声明变量:var、const和let,其中var在ECMAScript的所有版本中都可以使用,而const和let只能在ECMAScript 6及更晚的版本中使用,本文就来说说二者的区别,感兴趣的可以了解一下
    2022-11-11
  • JavaScript如何获取父级元素和子级元素代码示例

    JavaScript如何获取父级元素和子级元素代码示例

    最近工作中总遇到取各种父啊子啊,每次都得查,所以下面这篇文章主要给大家介绍了关于JavaScript如何获取父级元素和子级元素的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • JavaScript读二进制文件并用ajax传输二进制流的方法

    JavaScript读二进制文件并用ajax传输二进制流的方法

    这篇文章主要介绍了JavaScript读二进制文件并用ajax传输二进制流的方法的相关资料,需要的朋友可以参考下
    2016-07-07
  • 表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题

    表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题

    这篇文章主要介绍了表单input项使用label,同时引用Bootstrap库,导致input点击效果区增大问题的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • uniapp微信小程序:key失效的解决方法

    uniapp微信小程序:key失效的解决方法

    这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 一文带你探索JavaScript中斜杠的神秘世界

    一文带你探索JavaScript中斜杠的神秘世界

    斜杠可以在代码中拥有多种含义,所以在 JavaScript 编程中,处理斜杠是一项非常重要的任务,本文就来带大家一起来看看JavaScript是如何处理斜杠的
    2023-06-06
  • 老生常谈document.ready和window.onload

    老生常谈document.ready和window.onload

    这篇文章主要介绍了document.ready和window.onload的相关知识,包括document.ready和window.onload的区别,要使用document.ready()或者document.onload()的原因分析,本文结合实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2024-01-01
  • JavaScript操作文件_动力节点Java学院整理

    JavaScript操作文件_动力节点Java学院整理

    在HTML表单中,可以上传文件的唯一控件就是<input type="file">。下面通过本文给大家分享JavaScript操作文件的方法,感兴趣的朋友一起看看吧
    2017-06-06

最新评论