load-scripts
Version:
Dynamic scripts loading for modern browsers.
30 lines (28 loc) • 948 B
JavaScript
/*! load-scripts v2.0.0 | (c) 2018-present Chen Fengyuan | MIT */
function loadScripts(...urls) {
return Promise.all(urls.map((url) => new Promise((resolve, reject) => {
const parent = document.head || document.body || document.documentElement;
// Avoid loading script repeatedly
if (parent.querySelector(`script[src*="${url}"]`)) {
resolve(url);
return;
}
const script = document.createElement('script');
const loadend = () => {
script.onerror = null;
script.onload = null;
};
script.onerror = () => {
loadend();
reject(new Error(`Failed to load script: ${url}`));
};
script.onload = () => {
loadend();
resolve(url);
};
script.async = true;
script.src = url;
parent.appendChild(script);
})));
}
export { loadScripts as default };