Cómo ejecutar jQuery después de $(window).on('load')
Tengo una página de WordPress construida con el constructor de páginas Elementor en la que muestro 'flipbooks' (visores de PDF) usando un plugin llamado Responsive Flipbooks. Los flipbooks se hacen responsivos mediante una función de JavaScript que los redimensiona cada vez que se cambia el tamaño de la ventana del navegador (no sé por qué, pero no es mi plugin).
El problema es que los libros se renderizan en su tamaño más pequeño, y el plugin ejecuta jQuery(window).trigger('rfbwp.resize');
cuando la página carga, para activar un redimensionamiento y que se ajusten a la ventana actual. Sin embargo, esto parece no funcionar en algunos navegadores (al menos en Safari y Chrome en mi Mac), lo que hace que permanezcan pequeños. Descubrí que cuando pongo esta línea de código dentro de mi evento $(window).on('scroll')
, redimensiona perfectamente los libros cada vez que hago scroll. Por supuesto, también se redimensiona cuando cambio el tamaño de la página, pero no funciona cuando pongo esta línea de código dentro de mi evento $(window).on('load')
.
Esto me hace pensar que los elementos no se han cargado correctamente cuando se dispara este evento, lo cual es extraño, porque pensé que el evento de carga de la ventana se dispara al final.
¿Podría esto tener algo que ver con la forma en que WordPress construye una página, ya que todos los componentes vienen con sus propios scripts? ¿Es el caso que $(window).on('load')
se ejecuta último, incluso en una página compleja de WordPress?
La página en cuestión está disponible en http://cdgstyle.mixrabbit.com/lookbook/
Probablemente no tenga que ver con el núcleo de WordPress; en la mayoría de los casos, este tipo de problema surge cuando hay conflictos entre plugins. Sugeriría desactivar todos los demás plugins y probar con un tema predeterminado, como Twenty Seventeen. Si funciona en ese momento, puedes cambiar el tema y probar, luego activar un plugin a la vez y probar, hasta encontrar cuál está en conflicto, y luego informar al autor del plugin para que pueda encontrar una solución.
Mientras tanto, si usas un tema predeterminado y solo este plugin sigue sin funcionar, aquí hay dos cosas que puedes probar en lugar de $(window).on('load')
:
jQuery(window).load(function($) {
// tu función
});
O de manera más concisa:
(function($) {
// tu función
})(jQuery);
WordPress usa jQuery en modo "no conflict", por lo que podría ser simplemente la sintaxis del símbolo $
. Si eso lo soluciona, a menudo es más rápido enviar una solicitud de extracción (pull request) al repositorio del plugin para motivar al autor a tomar acción.
