diff --git a/Assets/Js/adsense-loader.js b/Assets/Js/adsense-loader.js index 985a02d5..5b73da74 100644 --- a/Assets/Js/adsense-loader.js +++ b/Assets/Js/adsense-loader.js @@ -305,35 +305,30 @@ * @returns {boolean} true si el estado fue determinado (filled o empty) */ function checkFillStatus(slot, ins) { - // Criterio 1: data-ad-status attribute + // IMPORTANTE: Solo data-ad-status es confiable para determinar el estado final. + // AdSense inyecta iframe ANTES de establecer data-ad-status, por lo que + // la presencia de iframe NO indica que el anuncio fue llenado. + var status = ins.getAttribute('data-ad-status'); + + // Estado definitivo: filled if (status === 'filled') { debugLog('Slot llenado (data-ad-status=filled)'); markSlotFilled(slot); return true; } + + // Estado definitivo: unfilled (sin anuncio disponible) if (status === 'unfilled') { debugLog('Slot vacio (data-ad-status=unfilled)'); markSlotEmpty(slot); return true; } - // Criterio 2 (fallback): iframe presente - var iframe = ins.querySelector('iframe'); - if (iframe) { - debugLog('Slot llenado (iframe detectado)'); - markSlotFilled(slot); - return true; - } - - // Criterio 3 (fallback): div con id presente - var divWithId = ins.querySelector('div[id]'); - if (divWithId) { - debugLog('Slot llenado (div con id detectado)'); - markSlotFilled(slot); - return true; - } - + // Si no hay data-ad-status, AdSense aun no ha respondido. + // NO usar iframe como criterio porque AdSense inyecta iframe incluso para unfilled. + // El MutationObserver seguira observando hasta que data-ad-status aparezca o timeout. + debugLog('Esperando data-ad-status...'); return false; }