mount-script
Version:
A simple function for mounting javascript
47 lines (45 loc) • 1.2 kB
JavaScript
/**
* Dynamic loading of js linked resources
*
* @param src - resource address
* @param option - parameters: attrs, props, force
* @returns - result
*/
function mountScript(src, option) {
if (option === void 0) {
option = {};
}
if (!src) throw new Error('[mountScript]: url is required');
var attrs = option.attrs,
props = option.props,
_a = option.force,
force = _a === void 0 ? false : _a;
return new Promise(function (resolve, reject) {
if (!force && document.querySelector("script[src=\"".concat(src, "\"]"))) {
resolve(true);
return;
}
var dom = document.createElement('script');
var attr, prop;
if (attrs) {
for (attr in attrs) {
dom[attr] = attrs[attr];
}
}
if (props) {
for (prop in props) {
dom[prop] = props[prop];
}
}
dom.src = src;
document.body.appendChild(dom);
dom.onload = dom.onreadystatechange = function () {
if (!dom.readyState || ['loaded', 'complete'].includes(dom.readyState)) {
dom.onload = dom.onreadystatechange = null;
resolve(true);
}
};
dom.onerror = reject;
});
}
export { mountScript as default };