(function() { // Solo ejecutar si no existe ya if (document.getElementById('preview-preloader-script-loaded')) return; // Marcar como cargado const scriptMarker = document.createElement('div'); scriptMarker.id = 'preview-preloader-script-loaded'; scriptMarker.style.display = 'none'; document.body.appendChild(scriptMarker); const preloader = document.getElementById('preview-preloader'); if (!preloader) return; let hideTimeout; let hasHidden = false; function hidePreloader() { if (hasHidden) return; hasHidden = true; if (hideTimeout) clearTimeout(hideTimeout); preloader.classList.add('fade-out'); setTimeout(() => { if (preloader && preloader.parentNode) { preloader.style.display = 'none'; } }, 400); } // Función para verificar si el contenido crítico está visible function checkCriticalContent() { // Verificar si hay un menú visible const menuSelectors = [ 'nav', '.menu', '.navigation', '.navbar', '#menu', '.main-menu', '.primary-menu', 'header nav' ]; for (let selector of menuSelectors) { const menu = document.querySelector(selector); if (menu && menu.offsetHeight > 0) { console.log('Menú detectado:', selector); hidePreloader(); return true; } } // Verificar si hay imágenes cargadas y visibles const images = document.querySelectorAll('img'); for (let img of images) { // Verificar si la imagen está cargada y es visible if (img.complete && img.naturalHeight > 0 && img.offsetHeight > 0 && !img.src.includes('data:image')) { // Ignorar placeholders base64 console.log('Imagen visible detectada:', img.src); hidePreloader(); return true; } } // Verificar contenido principal const contentSelectors = [ '.site-header', '.header', 'main', '.content', '#content', 'article' ]; for (let selector of contentSelectors) { const content = document.querySelector(selector); if (content && content.offsetHeight > 100) { // Al menos 100px de contenido console.log('Contenido principal detectado:', selector); // Dar un pequeño delay adicional para asegurar setTimeout(hidePreloader, 300); return true; } } return false; } // Observador para detectar cuando se agregan elementos al DOM const observer = new MutationObserver(() => { if (!hasHidden) { checkCriticalContent(); } }); // Iniciar observación observer.observe(document.body, { childList: true, subtree: true }); // Verificar imágenes cuando se cargan document.addEventListener('DOMContentLoaded', () => { const images = document.querySelectorAll('img'); images.forEach(img => { if (!img.complete) { img.addEventListener('load', () => { if (!hasHidden) checkCriticalContent(); }); } }); // Verificar contenido inicial setTimeout(() => { checkCriticalContent(); }, 100); }); // Verificar cuando la ventana se carga completamente window.addEventListener('load', () => { setTimeout(() => { if (!hasHidden) { checkCriticalContent(); } }, 500); // Pequeño delay después del load }); // Verificar periódicamente los primeros 3 segundos let checkInterval = setInterval(() => { if (hasHidden || checkCriticalContent()) { clearInterval(checkInterval); } }, 200); // Limpiar el interval después de 3 segundos setTimeout(() => { clearInterval(checkInterval); }, 3000); // Fallback - ocultar después de 8 segundos máximo setTimeout(() => { if (!hasHidden) { console.log('Fallback: ocultando después de 8 segundos'); hidePreloader(); } }, 8000); // Limpiar observer después de ocultar setTimeout(() => { observer.disconnect(); }, 10000); })(); https://sitiofacil.cl/wp-sitemap-posts-post-1.xmlhttps://sitiofacil.cl/wp-sitemap-posts-page-1.xmlhttps://sitiofacil.cl/wp-sitemap-posts-product-1.xmlhttps://sitiofacil.cl/wp-sitemap-taxonomies-category-1.xmlhttps://sitiofacil.cl/wp-sitemap-taxonomies-product_cat-1.xmlhttps://sitiofacil.cl/wp-sitemap-users-1.xml