IE条件注释内的入队脚本

时间:2014-03-13 作者:Moss

我试图将selectivizr包括在内。js内部条件注释。我做错了什么?

<!DOCTYPE html>
<html class="no-js" <?php language_attributes(); ?>>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title><?php wp_title(\'|\', true, \'right\'); ?></title>
  <meta name="viewport" content="width=device-width, initial-scale=1">

    <?php wp_head(); ?>

  <!--[if (gte IE 6)&(lte IE 8)]>
  <?php
    function blarg(){
      wp_enqueue_script(\'selectivizr\', get_template_directory_uri() . \'assets/js/vendor/selectivizr.js\');
    }
    add_action(\'wp_enqueue_scripts\', \'blarg\', 101);
  ?>
  <![endif]-->

  <link rel="alternate" type="application/rss+xml" title="<?php echo get_bloginfo(\'name\'); ?> Feed" href="<?php echo esc_url(get_feed_link()); ?>">
</head>
注释之间没有显示任何内容。我使用的是根主题。他们有一个脚本。其他脚本排队的php。如果我把wp_enqueue_script() 在那个文件中它可以工作,但我不能做条件注释。

更新时间:

好的,真正的挑战似乎是在条件注释(或任何其他特定的HTML)中获取脚本仍然会使用排队系统。最好的方法是什么?还是有办法?

3 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

改变

<!--[if (gte IE 6)&(lte IE 8)]>
  <?php
    function blarg(){
      wp_enqueue_script(\'selectivizr\', get_template_directory_uri() . \'assets/js/vendor/selectivizr.js\');
    }
    add_action(\'wp_enqueue_scripts\', \'blarg\', 101);
  ?>
  <![endif]-->

<!--[if (gte IE 6)&(lte IE 8)]>

<script src="<?php echo get_template_directory_uri(); ?>/assets/js/vendor/selectivizr.js" type="text/javascript"></script>

<![endif]-->
wp_enqueue_script() 应仅用于functions.php 文件

SO网友:Jack

就我个人而言,我不会使用wp_enqueue_scripts 除非你在函数中。php文件。

如果希望在某个页面上专门调用此脚本,可以使用is_page() 作用然后,为了检测浏览器并有条件地调用函数,我们将使用全局变量$_SERVER[\'HTTP_USER_AGENT\'].

function blarg(){
    if (is_page( \'Page_name\' )){
        if (preg_match(\'/(?i)msie [6-8]/\',$_SERVER[\'HTTP_USER_AGENT\'])){
            wp_enqueue_script(\'selectivizr\', get_template_directory_uri() . \'assets/js/vendor/selectivizr.js\');
        }
    }
}   
add_action(\'wp_enqueue_scripts\', \'blarg\');

SO网友:David

您应该避免将脚本直接添加到模板中,并将它们从主题函数中排队。php或插件或任何存储逻辑的地方。

在这种情况下,您可以在blarg函数中编写如下内容:

wp_enqueue_script(\'selectivizr\', get_template_directory_uri() . \'assets/js/vendor/selectivizr.js\', array(), \'1.0\', false);

wp_script_add_data( \'selectivizr\', \'conditional\', \'lte IE 8\' );
通过使用wp_script_add_data 函数您可以选择脚本是立即运行,还是与页面加载异步,还是延迟到最后(相当于将脚本放在页脚中),最重要的是,您可以围绕它包装条件代码。

看见https://developer.wordpress.org/reference/functions/wp_script_add_data/

结束

相关推荐