【问题标题】:Conditional statements bug in Google ChromeGoogle Chrome 中的条件语句错误
【发布时间】:2010-04-13 21:01:25
【问题描述】:

当我使用针对 IE6 及以下版本的条件语句和一些 PHP 代码时,谷歌浏览器会忽略该语句并插入代码。

例子:

<!--[if lte IE 6]>
<?php require_once("ie6.php"); ?>
<![endif]-->

无论如何它都会在正文中插入ie6.php的内容。

ie6.php中的代码是这样的:

<?php print '<p>This is IE6</p>'; ?>

以前有人遇到过这个问题吗?

【问题讨论】:

  • 需要知道ie6.php 是什么以及什么代码出了问题。
  • 但不应该只插入IE6或以下的代码吗?
  • 我猜如果 ie6.php 不生成 作为它的输出的一部分。
  • chrome 提供/提供了哪些源代码?
  • @Josh 抱歉没听懂你的问题。

标签: php google-chrome conditional


【解决方案1】:

PHP 将打印&lt;!--[if lte IE 6]&gt;,然后包含“ie6.php”文件,然后打印<![endif]--> ,因为这正是您告诉它要做的事情。

您混淆了哪些代码行由服务器运行,哪些由浏览器解析。

Chrome 会忽略像 &lt;!--[if lte IE 6]&gt; 这样的行,因为它们仅针对 IE 浏览器。

【讨论】:

  • 是的,我知道...问题是 Chrome 显示了条件语句中打印的内容。无论如何,我遇到了问题,请参阅下面的解决方案。
【解决方案2】:

PHP 代码是在考虑 if 语句之前插入的,所以它总是会在那里。

  1. 服务器评估页面并呈现任何 PHP 代码
  2. 渲染的 html,包括 ie6.php 的内容,被发送到浏览器
  3. 浏览器看到 lte IE 6 有条件并采取行动

【讨论】:

    【解决方案3】:

    浏览器是唯一使用条件语句的东西。

    因为 PHP 是在服务器上运行,然后将生成的页面发送到浏览器,所以 IE 条件不起作用。

    【讨论】:

      【解决方案4】:

      此 php 代码将始终包含在服务器端(无论浏览器如何)。

      据我所知,条件 cmets 在客户端工作,浏览器不必尊重它们(我不记得细节,但我在某处读到浏览器可以用 HTML cmets 做任何它想做的事情,甚至将它们剪掉完全让那些把javascript放进去的人会感到惊讶)。

      如果您想决定是否包含文件,请使用一些浏览器检测:$_SERVER['HTTP_USER_AGENT'] 或 get_browser() 将是一个不错的起点。

      【讨论】:

        【解决方案5】:

        问题在于 ie6.php 中的 html 代码内部是另一个注释,Chrome 不喜欢它。

        类似这样的:

        <?php print '<p>This is IE6 <!--a comment--> </p>'; ?>
        

        Chrome 似乎将注释结束标记解释为结束标记,随后“误读”了条件语句。

        【讨论】:

          【解决方案6】:

          我在 chrome 上遇到了类似的问题

          <!--[if IE]>
          
             <!-- a comment about my code -->
             doIEstuff
          
          <![endif]-->
          

          条件注释内的注释对FF和IE来说很好,但它使chrome执行条件注释内的代码

          【讨论】:

            猜你喜欢
            • 2020-09-29
            • 2017-12-15
            • 2022-01-15
            • 1970-01-01
            • 1970-01-01
            • 2014-11-13
            • 1970-01-01
            • 2017-03-31
            • 1970-01-01
            相关资源
            最近更新 更多