Come eseguire jQuery dopo $(window).on('load')
Ho una pagina WordPress costruita con Elementor in cui visualizzo "flipbook" (visualizzatori PDF) utilizzando un plugin chiamato Responsive Flipbooks. I flipbook vengono resi responsive da una funzione JavaScript che li ridimensiona quando la finestra del browser cambia dimensione (non so perché, ma non è il mio plugin).
Il problema è che i libri vengono renderizzati nella loro dimensione più piccola, e il plugin attiva jQuery(window).trigger('rfbwp.resize');
quando la pagina carica, per innescare un ridimensionamento e adattarli alla finestra corrente. Tuttavia, questo sembra non funzionare su alcuni browser (almeno su Safari e Chrome sul mio Mac), causando il mantenimento delle dimensioni ridotte. Ho scoperto che inserendo questa riga di codice nel mio evento $(window).on('scroll')
, i libri si ridimensionano perfettamente quando scorro. Naturalmente si ridimensionano anche quando ridimensiono effettivamente la pagina, ma non funziona quando inserisco questa riga di codice nell'evento $(window).on('load')
.
Questo mi fa pensare che gli elementi non siano stati caricati correttamente quando questo evento viene attivato, il che è strano, perché pensavo che l'evento load della finestra fosse l'ultimo a scatenarsi.
Potrebbe avere qualcosa a che fare con il modo in cui WordPress costruisce una pagina, dato che tutti i componenti hanno i propri script? È possibile che $(window).on('load')
venga attivato per ultimo - anche in una pagina WordPress complessa?
La pagina in questione è disponibile all'indirizzo http://cdgstyle.mixrabbit.com/lookbook/
Probabilmente non è correlato al nucleo di WordPress - nella maggior parte dei casi questo tipo di problema si verifica quando ci sono conflitti tra plugin. Suggerirei di disattivare tutti gli altri plugin e provare con un tema predefinito, come Twenty Seventeen. Se funziona a quel punto, puoi cambiare il tema e testare, quindi attivare un plugin alla volta e testare, fino a trovare quale causa il conflitto, quindi segnalarlo all'autore del plugin in modo che possa trovare una soluzione alternativa.
Nel frattempo, se stai usando un tema predefinito e solo questo plugin continua a non funzionare, ecco due alternative da provare al posto di $(window).on('load')
:
jQuery(window).load(function($) {
// il tuo codice
});
O in modo più conciso
(function($) {
// il tuo codice
})(jQuery);
WP utilizza jQuery in modalità no conflict - quindi potrebbe essere semplicemente la sintassi con $
. Se questo risolve il problema, spesso è più veloce inviare una pull request al repository del plugin per stimolare l'autore ad agire.
