原生JS实现JQuery的$.getScript()方法

在很多情况下,我们需要使用JQuery库里的$.getScript()方法,载入js后执行指定js方法
有时候是不需要直接用<script src="/js/xxxx.js"></script>全部引入js的
这样会影响页面的加载速度(因为页面加载完成后有些功能是不需要立刻执行的,而是用户点击、滚动、等其它行为时再加载相应的js文件),间接的实现js懒加载
如果只是仅仅使用这个方法的话,则需要引入JQuery库(未压缩:250kb、压缩:90kb)
这没必要引入JQuery来使用$.getScript()方法,这个完全是可以使用原生js实现的,$.getScript()这个方法是简写的 Ajax 函数

COPY
1
2
3
4
5
$.ajax({
url: url,
dataType: "script",
success: success
});

废话不多说直接上代码
使用动态创建script标签的办法来实现动态加载(也可以使用ajax请求(原生))
优点:可跨域

COPY
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
* 动态添加JavaScript
* @param {*} url 资源地址
* @param {*} callback 回调方法
*/
function getScript(url, callback) {
var script = document.createElement('script');// 创建script元素
script.type = "text/javascript"; // 定义script元素的类型(可省略)
if (typeof (callback) != "undefined") { // 判断是否使用回调方法(第二个参数)
if (script.readyState) {// js状态
console.log(script.onreadystatechange); // onreadystatechange:js状态改变时执行下方函数
script.onreadystatechange = function () {
if (script.readyState == "loaded" || script.readyState == "complete") { // loaded:是否下载完成 complete:js执行完毕
script.onreadystatechange = null;
callback();
}
}
} else {
script.onload = function () {
callback();
}
}
}
script.src = url; // js地址
document.body.appendChild(script);// 插入body可改为head
}
Authorship: Lete乐特
Article Link: https://blog.imlete.cn/article/JavaScript-getScript.html
Copyright: All posts on this blog are licensed under the CC BY-NC-SA 4.0 license unless otherwise stated. Please cite Lete乐特 's Blog !