Перейти к содержимому

Отложенная загрузка скриптов

Подключение происходит по целевому действию пользователя или через 5 секунд полсе загрузки страницы

function delayedLoading(fn,n,t=5000) {
const ctr=new AbortController();const signal=ctr.signal,once=true;let c=false,tId;
function loadFallback(e){tId = setTimeout(()=>connectScript(e),t)}
function connectScript(e){if(c)return;c=true;clearTimeout(tId);ctr.abort();fn();if(n)console.debug(`Скрипт %c${n}`,"color:#26bfa5;","запустился по эвенту:",e)}
window.addEventListener('load',loadFallback,{signal,once});
["mouseenter","click"].forEach(function(e){document.addEventListener(e,connectScript,{signal,once})});
["scroll","touchstart"].forEach(function(e){window.addEventListener(e,connectScript,{passive:true,signal,once})});
}