UNPKG

@zohodesk/utils

Version:

Unified Component Library - Utils

56 lines (45 loc) 1.28 kB
/* 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); } }); }