@wezom/zz-load
Version:
Lazy loader based on IntersectionObserver API
51 lines (50 loc) • 1.35 kB
JavaScript
export default function (element, resource, _a, loadActions, errorActions) {
var setSourcesOnlyOnLoad = _a.setSourcesOnlyOnLoad;
if (setSourcesOnlyOnLoad) {
var iframe_1 = document.createElement('iframe');
iframe_1.addEventListener('error', function (event) {
return errorActions(event, resource);
});
iframe_1.addEventListener('load', function (event) {
if (element instanceof HTMLIFrameElement) {
element.src = resource;
element.removeAttribute('srcdoc');
} else {
element.appendChild(iframe_1);
}
loadActions(event, resource);
});
iframe_1.src = resource;
} else {
if (element instanceof HTMLIFrameElement) {
element.addEventListener('error', function (event) {
return errorActions(event, resource);
});
element.addEventListener(
'load',
function (event) {
return loadActions(event, resource);
},
{
once: true
}
);
element.src = resource;
element.removeAttribute('srcdoc');
} else {
var iframe_2 = document.createElement('iframe');
iframe_2.addEventListener('error', function (event) {
return errorActions(event, resource);
});
iframe_2.addEventListener(
'load',
function (event) {
element.appendChild(iframe_2);
loadActions(event, resource);
},
{ once: true }
);
iframe_2.src = resource;
}
}
}