web-dev-qa-db-de.com

Asynchrone Javascript-Lader

Ich möchte das Laden meiner Skripte nutzen, während die Seite geladen wird. dh Yepnope , head.js etc ...

Aber ich möchte auch in der Lage sein, das Skript in die Warteschlange zu stellen, damit andere Plugins nicht versuchen, ihr eigenes hinzuzufügen. (a la jquery)

Hat jemand irgendwelche Vorschläge?

Danke im Voraus...

2
Adam

Sie können nicht beides haben: Sie verwenden entweder wp_enqueue_script () oder head.js

Oder Sie machen ein paar verrückte Hacks, um den WP Skript-Abhängigkeitsbaum in head.js-Aufrufe zu übersetzen.

NB: Ersetzen Sie head.js durch die Bibliothek, die Sie verwenden möchten.

1
scribu

Dies sollte ein Kommentar sein, aber ich habe diese Privilegien noch nicht.

Wenn es jedoch in erster Linie darum geht, Duplikate zu vermeiden, müssen Sie die Registrierung des Skripts aufheben, dasselbe Skript ohne Quelle registrieren und in die Warteschlange stellen. Im Wesentlichen führt wp ein leeres Skript aus, um alle anderen Register-/Enqueue-Versionen davon zu blockieren.

Fügen Sie dann das Skript mit der Methode Ihrer Wahl hinzu. Ich habe noch keine gründlichen Tests durchgeführt, habe aber den Tipp von einer anderen Stelle erhalten, und theoretisch sollte es gut funktionieren.

1
David Hobs

Hier ist die einfache Möglichkeit, alle benutzerdefinierten JS-Dateien in WordPress asynchron hinzuzufügen.

In functions.php hinzufügen:

// Async load for all style
    function base_async_scripts($url)
    {
        if ( strpos( $url, '#asyncload') === false )
            return $url;
        else if ( is_admin() )
            return str_replace( '#asyncload', '', $url );
        else
        return str_replace( '#asyncload', '', $url )."' async='async"; 
        }
    add_filter( 'clean_url', 'base_async_scripts', 11, 1 );

//add or change in url as mentioned below
wp_enqueue_script( 'base-functions', get_template_directory_uri() . '/js/functions.js#asyncload', array( 'jquery' ), null, true );
0
user86710

Ich habe gerade ein Plugin veröffentlicht, das ein Dropin für WordPress-Installationen sein sollte. Noch sehr früh und ich bin mir sicher, dass es Fehler geben wird, aber es hat für mich auf einer Seite funktioniert, an der ich arbeite:

http://wordpress.org/extend/plugins/asynchronous-javascript/

0
Paris Holley