fix(js): wait for adsbygoogle.js before push scripts
Race condition caused push to execute before library loaded. Add onload callback to loadAdSenseScripts() function.
This commit is contained in:
@@ -54,31 +54,42 @@
|
|||||||
// Remover event listeners para prevenir múltiples triggers
|
// Remover event listeners para prevenir múltiples triggers
|
||||||
removeEventListeners();
|
removeEventListeners();
|
||||||
|
|
||||||
// Cargar etiquetas de script de AdSense
|
// Cargar etiquetas de script de AdSense y esperar a que cargue
|
||||||
loadAdSenseScripts();
|
// 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
|
// Ejecutar scripts de push de AdSense
|
||||||
executeAdSensePushScripts();
|
executeAdSensePushScripts();
|
||||||
|
|
||||||
// Agregar clase loaded al body
|
// Agregar clase loaded al body
|
||||||
document.body.classList.add(CONFIG.loadedClass);
|
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
|
* 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]');
|
const delayedScripts = document.querySelectorAll('script[data-adsense-script]');
|
||||||
|
|
||||||
if (delayedScripts.length === 0) {
|
if (delayedScripts.length === 0) {
|
||||||
debugLog('No se encontraron scripts retrasados de AdSense');
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
debugLog('Se encontraron ' + delayedScripts.length + ' script(s) retrasado(s) de AdSense');
|
debugLog('Se encontraron ' + delayedScripts.length + ' script(s) retrasado(s) de AdSense');
|
||||||
|
|
||||||
|
var scriptsLoaded = 0;
|
||||||
|
var totalScripts = delayedScripts.length;
|
||||||
|
|
||||||
delayedScripts.forEach(function(oldScript) {
|
delayedScripts.forEach(function(oldScript) {
|
||||||
const newScript = document.createElement('script');
|
const newScript = document.createElement('script');
|
||||||
|
|
||||||
@@ -95,6 +106,23 @@
|
|||||||
newScript.crossorigin = oldScript.getAttribute('crossorigin');
|
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
|
// Reemplazar script viejo con el nuevo
|
||||||
oldScript.parentNode.replaceChild(newScript, oldScript);
|
oldScript.parentNode.replaceChild(newScript, oldScript);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ if (!defined('ABSPATH')) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Definir constante de versión del tema
|
// Definir constante de versión del tema
|
||||||
define('ROI_VERSION', '1.0.21');
|
define('ROI_VERSION', '1.0.22');
|
||||||
|
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
// 1. CARGAR AUTOLOADER MANUAL
|
// 1. CARGAR AUTOLOADER MANUAL
|
||||||
|
|||||||
Reference in New Issue
Block a user