31 lines
1.1 KiB
JavaScript
31 lines
1.1 KiB
JavaScript
const scripts = {}
|
|
|
|
// 定义一个函数,用于加载脚本
|
|
export default function loadScript (globalName, src, callback) {
|
|
// 如果全局对象已经存在,直接执行回调函数
|
|
const globalObject = typeof globalName === 'string' ? window[globalName] : globalName
|
|
if (globalObject) {
|
|
callback() // 如果全局对象已经存在,直接执行回调函数
|
|
return
|
|
}
|
|
// 如果脚本还未加载,则将回调函数存储起来,等待脚本加载完成后执行
|
|
let callbacks = scripts[src]
|
|
if (!callbacks) {
|
|
// 如果脚本还未加载,则将回调函数存储起来
|
|
callbacks = scripts[src] = []
|
|
// 创建一个 script 标签
|
|
const script = document.createElement('script')
|
|
// 设置 script 标签的 src 属性
|
|
script.src = src
|
|
// 将 script 标签添加到 body 中
|
|
document.body.appendChild(script)
|
|
// 当脚本加载完成后执行回调函数
|
|
script.onload = function () {
|
|
callbacks.forEach(callback => callback()) // 当脚本加载完成后执行回调函数
|
|
delete scripts[src] // 删除已经执行的回调函数
|
|
}
|
|
}
|
|
// 将回调函数存储起来
|
|
callbacks.push(callback)
|
|
}
|