UNPKG

util-helpers

Version:

一个基于业务场景的工具方法库

52 lines (49 loc) 2.01 kB
import { __assign, __rest } from 'tslib'; import { isObject } from 'ut2'; import { objectKeys } from './utils/native.js'; var loadScript = function (_src, options) { var finalOptions; if (isObject(_src)) { finalOptions = _src; } else if (typeof _src === 'string') { finalOptions = __assign({ src: _src }, options); } else { finalOptions = options || {}; } return new Promise(function (resolve, reject) { var container = document.head || document.getElementsByTagName('head')[0] || document.body; var script = document.createElement('script'); var src = finalOptions.src, attrs = finalOptions.attrs, _a = finalOptions.destroyOnError, destroyOnError = _a === void 0 ? true : _a, onload = finalOptions.onload, onerror = finalOptions.onerror, restOptions = __rest(finalOptions, ["src", "attrs", "destroyOnError", "onload", "onerror"]); var props = __assign({ async: true, type: 'text/javascript' }, restOptions); for (var key in props) { script[key] = props[key]; } if (typeof attrs === 'object') { objectKeys(attrs).forEach(function (key) { script.setAttribute(key, attrs[key]); }); } if (src) { script.src = src; script.onload = function (ev) { onload === null || onload === void 0 ? void 0 : onload.call(this, ev); resolve(script); }; script.onerror = function (ev) { this.onerror = this.onload = null; onerror === null || onerror === void 0 ? void 0 : onerror.call(this, ev); if (destroyOnError) { container.removeChild(script); } reject(new URIError('Failed to load ' + this.src)); }; } container.appendChild(script); if (!src) { resolve(script); } }); }; export { loadScript as default };