it-swarm.com.de

Enqueue-Skript nur für IE

Ich möchte dd belatedpng verwenden, damit die PNGs auf meiner Website im IE korrekt angezeigt werden. Das Skript, das ich immer auf Nicht-WordPress-Websites verwendet habe, war

<!--[if lt IE 7 ]>
    <script src="js/dd_belatedpng.js"></script>
    <script> DD_belatedPNG.fix('img, .ir'); </script>
<![endif]-->

Jetzt, da ich es auf einer Wordpress-Website verwenden muss, versuche ich, mithilfe von Enqueue-Skripten eine Möglichkeit zum Hinzufügen von Skripten zu finden, obwohl ich es überhaupt nicht mag. Letztendlich wird das Thema nur auf einer einzigen Website verwendet. Ich würde es vorziehen, den Skriptpfad fest zu codieren.

Wie auch immer, gibt es eine Möglichkeit, IE Bedingungen zum Enqueue-Skript und/oder zum Registrieren des Skripts hinzuzufügen?

3

WordPress hat eine $is_IE globale Variable:

global $is_IE;
if($is_IE) enqueue_script(...);

Persönlich bevorzuge ich die IE bedingten Kommentare. Andere Browser ignorieren sie sowieso, daher gibt es keinen Grund, PHP für die Browsererkennung zu verwenden.

Möglicherweise möchten Sie auch 8-Bit-Alpha-PNG-Bilder anstelle von 24-Bit-PNGs verwenden, für die im IE und in den meisten Fällen keine JavaScript-Korrektur erforderlich ist In den meisten Fällen sehen sie genauso aus wie ein 24-Bit-PNG.

5
onetrickpony

Enqueue unterstützt keine Ausgabe komplexerer Blöcke, sondern nur Skriptdateien.

Der beste Ansatz hierfür wäre eine kleine Funktion, die diesen Block wiedergibt (bedingt, wenn Sie ihn nicht auf jeder einzelnen Seite benötigen) und mit wp_head verknüpft ist.

3
Rarst

Diese Frage ist 4 Jahre alt, also schätze ich, dass Sie sie nicht einmal mehr benutzen. Für andere, die auf diese Frage stoßen, kann dies jedoch folgendermaßen geschehen:

add_action('wp_enqueue_scripts', function() {
        wp_enqueue_script( 'dd_belatedpng',
            get_template_directory_uri() . '/js/dd_belatedpng.js', 
            array(), 
            '1.0.0', 
            false 
        );
        wp_script_add_data('dd_belatedpng', 'conditional', 'lt IE 7');
});

add_action('wp_head', function(){
   if (wp_script_is( 'dd_belatedpng', 'enqueued' )) {
       echo '<!--[if lt IE 7]><script> DD_belatedPNG.fix('img, .ir'); </script><![endif]-->' . "\n";
   }
});

Das oben beschriebene Verfahren wird nur in IE Browsern gedruckt, sodass Seitenbandbreite gespart und gleichzeitig das Hauptskript in die Warteschlange gestellt werden kann. Der is_IE-Teil kann jedoch auch ein unnötiger Zusatz sein.

Ich glaube, das ist der beste Weg, dies umzusetzen.

0
Bryan Willis

Um die Antwort von Rarst zu ergänzen, kann dies in Ihrer Funktionsdatei wie folgt erfolgen.

add_action( 'wp_head', 'add_belatedpng_js' );

if ( ! function_exists( 'add_belatedpng_js' ) ) {
  function add_belatedpng_js() {

   if (! is_admin()) {      
    echo '
    <!--[if lt IE 7]>
      <script src="js/dd_belatedpng.js"></script>
      <script> DD_belatedPNG.fix('img, .ir'); </script>
    <![endif]-->';
 }
}
0
FFrewin