it-swarm.com.de

Gibt es ein Ereignis oder eine andere Methode, die besagt, dass die Vorschau geladen wird?

Ich arbeite an einem Plugin für den WordPress Customizer und muss eine Funktion aufrufen, wenn der Previewer geladen wurde. Gibt es ein Ereignis oder eine andere Methode, die besagt, dass die Vorschau geladen wird?

Wenn versucht haben:

jQuery(window).load (function() { // Customizer loaded...
   wp.customize.previewer.bind( 'refresh', function() { // doesn't seem to work ?!
      alert ('Previewer has loaded'); 
   }
}

Ich habe auch versucht, wp.customizer.bind('refresh', function (){

Gibt es kein Ereignis, das beim Laden der Vorschau ausgelöst wird? Das Aktualisierungsereignis wird ausgelöst, wenn der Previewer aktualisiert wird.

Irgendwelche Ideen?

1
Milli

Ja, so können Sie feststellen, wann die Vorschau geladen wurde:

wp.customize.bind( 'ready', function() {
  wp.customize.previewer.bind( 'ready', function( message ) {
     console.info( 'Preview is loaded' );
  } );
} );

Dieser JS-Code sollte bei der Aktion customize_controls_enqueue_scripts mit dem Skript customize-controls als Abhängigkeit in die Warteschlange gestellt werden.

0
Weston Ruter

Ich habe kein Customizer-API-Ereignis gefunden, für das die Vorschau geladen wurde. Hier ist eine Lösung mit dem Ereignis on load auf dem iframe:

// Assures that the code gets runned once per load.
var code_has_run = false;

function preview_loader(){
    // When the customizer has loaded the iframe does not
    // exist yet. This checks if the iframe exists.

    if (jQuery('#customize-preview iframe').length > 0){    

        // When iframe/preview has loaded.
        jQuery('#customize-preview iframe').on('load', function (){

            // Wait a little until old frame is removed.
            setTimeout(function (){
                if (code_has_run == false){
                    // Code to be run when preview has loaded and is ready.
                    alert('Preview loaded');
                }
                code_has_run = true;

                // Wait until multiple load events are finished. 
                setTimeout(function(){
                    code_has_run = false;
                }, 1000);
            }, 1000);          
        });
    }
}

jQuery(window).load (function() { // Customizer loaded...

    //Call preview_loader if the preview loads under 500ms.
    preview_loader();

    setInterval(preview_loader, 500);  
}
0
Milli