mount-script
Version:
A simple function for mounting javascript
58 lines (54 loc) • 1.58 kB
JavaScript
/*!
* mount-script v1.2.0
* A simple function for mounting javascript
* (c) 2021-2023 saqqdy<https://github.com/saqqdy>
* Released under the MIT License.
*/
this.mountScript = (function () {
'use strict';
/**
* 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;
});
}
return mountScript;
})();