erp/resources/frontend/src/util/remoteLoad.js
DESKTOP-U9PSNEI\chunfen f9ddd2af62 feat: #20220802 yu
2022-08-02 10:16:07 +08:00

65 lines
1.5 KiB
JavaScript
Vendored

/*
* @Author: 陈智伟 9459156+chen-kaitao@user.noreply.gitee.com
* @Date: 2021-10-05 11:34:34
* @LastEditors: 陈智伟 9459156+chen-kaitao@user.noreply.gitee.com
* @LastEditTime: 2022-07-23 10:20:28
* @FilePath: /glxt/src/util/remoteLoad.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
export default function remoteLoad (url, hasCallback) {
return createScript(url)
/**
* 创建script
* @param url
* @returns {Promise}
*/
function createScript (url) {
const scriptElement = document.createElement('script')
document.body.appendChild(scriptElement)
const promise = new Promise((resolve, reject) => {
scriptElement.addEventListener(
'load',
(e) => {
removeScript(scriptElement)
if (!hasCallback) {
resolve(e)
}
},
false
)
scriptElement.addEventListener(
'error',
(e) => {
removeScript(scriptElement)
reject(e)
},
false
)
if (hasCallback) {
window.____callback____ = function () {
resolve()
window.____callback____ = null
}
}
})
if (hasCallback) {
url += '&callback=____callback____'
}
scriptElement.src = url
return promise
}
/**
* 移除script标签
* @param scriptElement script dom
*/
function removeScript (scriptElement) {
document.body.removeChild(scriptElement)
}
}