@studiometa/js-toolkit
Version:
A set of useful little bits of JavaScript to boost your project! 🚀
34 lines (33 loc) • 1 kB
JavaScript
function loadElement(src, type, { appendTo = null } = {}) {
return new Promise((resolve, reject) => {
const eventOptions = { once: true };
const prop = type === "link" ? "href" : "src";
const element = document.createElement(type);
element.addEventListener("load", (event) => resolve({ event, element }), eventOptions);
element.addEventListener("error", (event) => reject({ event, element }), eventOptions);
element[prop] = src;
if (appendTo) {
appendTo.append(element);
}
});
}
function loadImage(src, options) {
return loadElement(src, "img", options);
}
function loadIframe(src, options) {
return loadElement(src, "iframe", options);
}
function loadLink(src, options) {
return loadElement(src, "link", options);
}
function loadScript(src, options) {
return loadElement(src, "script", { appendTo: document.head, ...options });
}
export {
loadElement,
loadIframe,
loadImage,
loadLink,
loadScript
};
//# sourceMappingURL=loadElement.js.map