Merge pull request #24 from Serraniel/bugfix/#23-runAfterLoad-only-works-if-called-before-page-loaded

#23 Run script directly if page already loaded
This commit is contained in:
Daniel 2020-08-21 16:22:39 +02:00 committed by GitHub
commit e528a6f730
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -27,16 +27,34 @@ observer.observe(document.documentElement || document.body, {
attributes: true
});
function findPreloader() {
return document.getElementById('preloader');
}
function runAfterLoad(func, pattern = '.*') {
__afterLoadScripts.push({ "function": func, "pattern": pattern });
let preloader = findPreloader();
if (typeof preloader !== undefined && preloader.style.display !== "none") {
__afterLoadScripts.push({ "function": func, "pattern": pattern });
} else {
func();
}
}
document.addEventListener("DOMContentLoaded", event => awaitPageLoaded(), false);
function awaitPageLoaded() {
let preLoader = document.getElementById('preloader');
let preLoader = findPreloader();
let runScripts = () => {
__afterLoadScripts.forEach(script => {
if (window.location.pathname.match(script.pattern)) {
script.function();
}
});
};
if (typeof preLoader === 'undefined') {
runScripts();
return;
}
@ -44,11 +62,7 @@ function awaitPageLoaded() {
if (preLoader.style.display === "none") {
clearInterval(loop);
__afterLoadScripts.forEach(script => {
if (window.location.pathname.match(script.pattern)) {
script.function();
}
})
runScripts();
}
}, 100);
}