diff --git a/Assets/Js/adsense-loader.js b/Assets/Js/adsense-loader.js index a2bfaa8c..55daf56b 100644 --- a/Assets/Js/adsense-loader.js +++ b/Assets/Js/adsense-loader.js @@ -54,31 +54,42 @@ // Remover event listeners para prevenir múltiples triggers removeEventListeners(); - // Cargar etiquetas de script de AdSense - loadAdSenseScripts(); + // Cargar etiquetas de script de AdSense y esperar a que cargue + // IMPORTANTE: Debe esperar a que adsbygoogle.js cargue antes de ejecutar push + loadAdSenseScripts(function() { + debugLog('Biblioteca AdSense cargada, ejecutando push scripts...'); - // Ejecutar scripts de push de AdSense - executeAdSensePushScripts(); + // Ejecutar scripts de push de AdSense + executeAdSensePushScripts(); - // Agregar clase loaded al body - document.body.classList.add(CONFIG.loadedClass); + // Agregar clase loaded al body + document.body.classList.add(CONFIG.loadedClass); - debugLog('Carga de AdSense completada'); + debugLog('Carga de AdSense completada'); + }); } /** * Encuentra y carga todas las etiquetas de script de AdSense retrasadas + * @param {Function} callback - Función a ejecutar cuando la biblioteca cargue */ - function loadAdSenseScripts() { + function loadAdSenseScripts(callback) { const delayedScripts = document.querySelectorAll('script[data-adsense-script]'); if (delayedScripts.length === 0) { debugLog('No se encontraron scripts retrasados de AdSense'); + // Ejecutar callback de todas formas (puede haber ads sin script principal) + if (typeof callback === 'function') { + callback(); + } return; } debugLog('Se encontraron ' + delayedScripts.length + ' script(s) retrasado(s) de AdSense'); + var scriptsLoaded = 0; + var totalScripts = delayedScripts.length; + delayedScripts.forEach(function(oldScript) { const newScript = document.createElement('script'); @@ -95,6 +106,23 @@ newScript.crossorigin = oldScript.getAttribute('crossorigin'); } + // Esperar a que cargue antes de ejecutar callback + newScript.onload = function() { + scriptsLoaded++; + debugLog('Script cargado (' + scriptsLoaded + '/' + totalScripts + '): ' + newScript.src.substring(0, 50) + '...'); + if (scriptsLoaded === totalScripts && typeof callback === 'function') { + callback(); + } + }; + + newScript.onerror = function() { + scriptsLoaded++; + debugLog('Error cargando script: ' + newScript.src); + if (scriptsLoaded === totalScripts && typeof callback === 'function') { + callback(); + } + }; + // Reemplazar script viejo con el nuevo oldScript.parentNode.replaceChild(newScript, oldScript); }); diff --git a/functions.php b/functions.php index 45e0e9f1..bf7598bf 100644 --- a/functions.php +++ b/functions.php @@ -18,7 +18,7 @@ if (!defined('ABSPATH')) { } // Definir constante de versión del tema -define('ROI_VERSION', '1.0.21'); +define('ROI_VERSION', '1.0.22'); // ============================================================================= // 1. CARGAR AUTOLOADER MANUAL