Come eseguire jQuery dopo $(window).on('load')

15 feb 2018, 18:08:59
Visualizzazioni: 7.23K
Voti: 0

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/

2
Commenti

Questa non mi sembra una domanda specifica di WordPress. Il fatto che il tuo sito sia su WordPress non rende la domanda relativa a WordPress. Se "hackerare il plugin" funziona, chiederei all'autore del plugin.

Beee Beee
16 feb 2018 00:07:44

Mi sembrava una domanda specifica di WordPress, poiché normalmente è chiaro che un $(window).on('load') sia l'ultima cosa che accade, quindi non capisco perché non dovrebbe funzionare. Dato che WordPress carica una serie di plugin, ognuno dei quali esegue i propri script, pensavo che forse un motivo potesse essere il modo in cui WordPress costruisce una pagina. Ma in effetti non ho chiesto questo specificamente nella mia domanda, quindi la modificherò.

Rob Teeuwen Rob Teeuwen
16 feb 2018 11:53:19
Tutte le risposte alla domanda 1
0

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.

16 feb 2018 17:33:02