@zohodesk/utils
Version:
Unified Component Library - Utils
56 lines (45 loc) • 1.28 kB
JavaScript
/* eslint-disable import/prefer-default-export */
/* use promise and remove callback */
export default function loadResource(url, type, id, callback) {
let needDefer = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
return new Promise(resolve => {
let css;
let script;
if (id && document.getElementById(id)) {
resolve();
return;
}
if (type === 'css') {
css = document.createElement('link');
css.type = 'text/css';
css.rel = 'stylesheet';
css.href = url;
css.id = id || '';
css.onload = function () {
resolve();
};
css.onerror = function () {
resolve();
};
document.getElementsByTagName('head')[0].appendChild(css);
} else if (type === 'js') {
script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
script.defer = needDefer;
script.onload = function () {
resolve();
if (id) {
script.id = id;
}
if (typeof callback === 'function') {
callback();
}
};
script.onerror = function () {
resolve();
};
document.getElementsByTagName('head')[0].appendChild(script);
}
});
}