Ich habe in den WP-Dokumenten gelesen, die darauf hinwiesen, dass der richtige Weg, Stile für den IE in die Warteschlange zu stellen , die Verwendung von ist $wp_styles
. Ich vermute, dass dies dann auch für Skripte gilt.
Nehmen Sie diese Beispiele zum Beispiel ...
Option Eins - Verwendenwp_scripts
add_action('wp_print_scripts', function() {
global $wp_scripts;
wp_enqueue_script( 'html5shiv', 'https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js', array( 'bootstrap' ) );
$wp_scripts->add_data( 'html5shiv', 'conditional', 'lt IE 9' );
} );
Option Zwei - Verwenden Sie wp_scripts
zusammen mitis_IE
add_action('wp_print_scripts', function() {
global $wp_scripts, $is_IE;
if($is_IE) {
wp_enqueue_script( 'html5shiv', 'https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js', array( 'bootstrap' ) );
$wp_scripts->add_data( 'html5shiv', 'conditional', 'lt IE 9' );
}
} );
Option Drei - Echo es einfach im Kopf:
add_action('wp_head', function(){
echo '<!--[if lt IE 9]><script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script><![endif]-->' . "\n";
});
Option 4 - In die Warteschlange einführen:
add_action('wp_print_scripts', function(){
wp_enqueue_script( 'html5shiv', 'https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js', array( 'bootstrap' ) );
});
Die zweite Option. scheint cool zu sein, weil es in Nicht-IE-Browsern etwas sauberer aussieht. Aber ich bin mir nicht sicher, ob es tatsächlich einen Geschwindigkeitsvorteil hat oder ob die Prüfung allein ihn mehr verlangsamt. Abgesehen davon kann ich keinen Grund herausfinden, warum Option eins besser ist als Option 3 oder 4.
Der Grund für diese Frage
Ich verwende das Genesis-Framework und sie enthalten HTML5shiv wie das folgende Beispiel, das mir einfach nicht richtig erschien:
add_action( 'wp_head', 'genesis_html5_ie_fix' );
/**
* Load the html5 shiv for IE8 and below. Can't enqueue with IE conditionals.
*/
function genesis_html5_ie_fix() {
if ( ! genesis_html5() )
return;
echo '<!--[if lt IE 9]><script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->' . "\n";
}
quelle
Und Option 5 besteht darin, auf der Clientseite zu erkennen, um welchen Browser es sich handelt, und ein Skriptelement für Ihr Skript direkt im Dom zu erstellen, wie dies bei Google Analytics und einem FB SDK der Fall ist.
Dies hat den Vorteil, dass die Browsererkennung nur an der Stelle durchgeführt wird, an der dies erfolgen soll, nämlich im Browser, und dass die IE-spezifischen Skripte nur bei Bedarf geladen werden.
Im Geiste ist es Ihrer dritten Option sehr ähnlich, nur allgemeiner.
Nebenbemerkung:
is_IE
Wie bei allen anderen serverseitigen Browsern sollte die Erkennung vermieden werden, da sie das Caching unterbrechen .quelle
Im Allgemeinen sollten Skripte und Stile niemals direkt auf eine Seite gedruckt werden.
Der Grund dafür ist, dass ein anderes Plugin oder Thema möglicherweise dasselbe Skript erneut hinzufügt und Sie dasselbe Skript mindestens zweimal hinzufügen.
Wenn Sie das Asset ordnungsgemäß in die Warteschlange stellen und ein anderer Code dasselbe Asset erneut in die Warteschlange stellt, wird es einmal hinzugefügt.
Aus diesem Grund sollten Sie die Optionen 3 und 4 überspringen.
2 in Bezug auf Option, wie Mark Kaplun wies darauf hin , macht es die Verwendung von serverseitigen Browser - Erkennung, die nie sehr erschwinglich, und auch wenn es würde ist, lassen Sie nicht die Version des Browsers und in Ihrem Fall wählen sie gehören das Skript auch in modernen IE-Versionen, die es nicht brauchen.
Tatsächlich ist die Option 1 die beste unter den von Ihnen vorgeschlagenen.
Die einzigen Änderungen, die ich vornehmen würde:
'wp_enqueue_scripts'
Aktion anstelle von'wp_print_scripts'
wp_scripts()
Funktion, anstatt auf global zuzugreifenEtwas wie:
Wenn Sie ein anderes Plugin-Enqueue-
'html5shiv'
Skript erneut verwenden, wird es nur einmal hinzugefügt.Beachten Sie, dass mit dem obigen Snippet Folgendes gedruckt wird:
Diese Bedingung wird vom Browser (Client-Seite) und nicht vom Server analysiert. Sie ist daher erschwinglich und ermöglicht es Ihnen, das Skript nur für die IE-Version hinzuzufügen, auf die Sie abzielen möchten.
Wenn Sie mehr über die Client-Plattform wissen möchten (Betriebssystem, Bildschirmtyp und Auflösung, spezifische detaillierte Version des Browsers ...), können Sie diese Details nur mit Javascript abhören und das Skript dynamisch zum DOM hinzufügen (gemäß) Mark Kaplun- Lösung), aber wenn Ihnen die Kenntnis der "Browser-Familie" und der Hauptversion ausreicht, ist mein Vorschlag, diese Lösung zu verwenden.
quelle
wp_enqueue_scripts
istwp_enqueue_scripts
. Der einzige Grund, den ich verwendet habe,wp_print_scripts
war, dass es später geladen wurde, ähnlich wie es Bootstrap macht.wp_enqueue_scripts
ist der Standard-Hook zum Einreihen von Assets. Beiwp_print_scripts
Bränden sollten alle Skripte bereits in der Warteschlange stehen, und andere Plugins können dies annehmen. Nehmen Sie zum Beispiel github.com/roots/soil . Eines seiner Module verschiebt alle Skripte in die Fußzeile. Zu diesemwp_print_scripts
Zweck werden Aktionen vollständig entfernt , vorausgesetzt, alle Skripte befinden sich in der Warteschlangewp_enqueue_scripts
. Ihr Code ist mit diesem Plugin nicht kompatibel. Verwenden Sie daher, insbesondere wenn Sie Ihren Code teilen / verkaufen möchten, immer Standard-Hooks, um die Kompatibilität zu verbessern.</head>
Tag geladen werden . Ich persönlich benutze seit einigen Jahren Erde, abzüglich dersoil-js-to-footer
Themenunterstützung, da dies häufig Probleme verursacht, wenn ein Skript in den Kopf geladen werden soll.