factory_web/src/utils/load.js

61 lines
1.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* loadJS 异步加载远程JS
* @constructor
* @param {string} src - 必填需要加载的URL路径
* @param {string} keyName - 必填唯一key和JS返回的全局的对象名
* @param {string} callbackName - 非必填如果远程JS有callback则可更有效的判断是否完成加载
*/
export function loadJS (src, keyName, callbackName) {
return new Promise((resolve, reject) => {
let has = document.head.querySelector("script[loadKey="+keyName+"]")
if(has){
return resolve(window[keyName])
}
let script = document.createElement("script")
script.type = "text/javascript"
script.src = src
script.setAttribute("loadKey", keyName)
document.head.appendChild(script)
script.onload = () => {
if(callbackName){
window[callbackName] = () => {
return resolve(window[keyName])
}
}else{
setTimeout(()=>{
return resolve(window[keyName])
},50)
}
}
script.onerror = (err) => {
return reject(err)
}
})
}
/**
* loadCSS 异步加载远程css
* @constructor
* @param {string} src - 必填需要加载的URL路径
* @param {string} keyName - 必填唯一key
*/
export function loadCSS (src, keyName) {
return new Promise((resolve, reject) => {
let has = document.head.querySelector("link[loadKey="+keyName+"]")
if(has){
return resolve()
}
let link = document.createElement('link')
link.rel = "stylesheet"
link.href = src
link.setAttribute("loadKey", keyName)
document.head.appendChild(link)
link.onload = () => {
return resolve()
}
link.onerror = (err) => {
return reject(err)
}
})
}