Enqueue script only for IE

时间:2011-01-08 作者:José Tomás Tocino

我想使用dd-belatedpng,这样我网站上的PNG就可以正确地显示在IE上。我一直在非wordpress网站上使用的脚本是

<!--[if lt IE 7 ]>
    <script src="js/dd_belatedpng.js"></script>
    <script> DD_belatedPNG.fix(\'img, .ir\'); </script>
<![endif]-->
现在我需要在Wordpress网站上使用它,我正试图找到一种使用排队脚本添加脚本的方法,尽管我一点也不喜欢它。在一天结束时,主题只会在一个网站上使用,我更喜欢硬编码脚本路径。

无论如何,有没有办法将IE条件添加到排队脚本和/或注册脚本中?

5 个回复
最合适的回答,由SO网友:onetrickpony 整理而成

WordPress有一个$is_IE 全局变量:

global $is_IE;
if($is_IE) enqueue_script(...);
就个人而言,我更喜欢IE有条件的评论。其他浏览器无论如何都会忽略它们,所以没有理由使用PHP进行浏览器检测。

您可能还想考虑使用8 bit alpha PNG images 而不是24位PNG,它在IE中不需要任何javascript修复,在大多数情况下,它们看起来与24位PNG相同。

SO网友:Rarst

Enqueue不支持输出更复杂的块,只支持脚本文件。

实现这一点的最佳方法是使用一个小函数来响应此块(如果您不需要在每个页面上都使用它,则有条件地),该函数连接到wp_head.

SO网友:FFrewin

除了Rarst的答案之外,可以在函数文件中执行类似于以下操作的操作。

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]-->\';
 }
}

SO网友:Bryan Willis

这个问题已经问了4年了,所以我猜你已经不再使用这个了。然而,对于其他遇到这个问题的人来说,可以这样做:

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";
   }
});
以上内容只在IE浏览器中打印,这样可以节省一些页面带宽,同时也可以将主脚本排入队列。is\\U IE部分也可能是不必要的添加。

我相信这是实现这一目标的最佳方式。

SO网友:Gazillion

WordPress(从4.2.0开始)已经内置了对此的支持。你可以用wp_script_add_datawp_style_add_data 这取决于您试图使javascript文件或CSS文件有条件。

add_action( \'wp_enqueue_scripts\', \'enqueue_and_make_conditional\' );

function enqueue_and_make_conditional() {
    wp_enqueue_script( \'my-script\',  \'your-javascript-file.js\' );
    wp_script_add_data( \'my-script\', \'conditional\', \'lt IE 9\' );
}

结束

相关推荐