UNPKG

util-helpers

Version:

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

54 lines (50 loc) 2.03 kB
'use strict'; var tslib = require('tslib'); var ut2 = require('ut2'); var native = require('./utils/native.js'); var loadScript = function (_src, options) { var finalOptions; if (ut2.isObject(_src)) { finalOptions = _src; } else if (typeof _src === 'string') { finalOptions = tslib.__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 = tslib.__rest(finalOptions, ["src", "attrs", "destroyOnError", "onload", "onerror"]); var props = tslib.__assign({ async: true, type: 'text/javascript' }, restOptions); for (var key in props) { script[key] = props[key]; } if (typeof attrs === 'object') { native.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); } }); }; module.exports = loadScript;