【问题标题】:Check for internet explorer. PHP vs. ie conditional comments?检查 Internet Explorer。 PHP vs. 即条件注释?
【发布时间】:2009-11-01 00:05:39
【问题描述】:

所以我决定将我的 CSS 分解为一个仅限 ie6 和 ie7 的文件。我将在此文件中包含仅针对 ie6 和 ie7 的 CSS 规则,例如:

div {
    *color: red; /* target ie7 and below */
    _color: green; /* target ie6 and below */
}

如果可能的话,我更喜欢使用带有$_SERVER['HTTP_USER_AGENT'] 的PHP 来检测浏览器,而不是使用条件cmets。

我知道访问者可以“欺骗”他们的用户代理并声称是他们想要的任何浏览器,但是对于使用 PHP 而不是条件 cmets 来检测浏览器的一般意见是什么?

【问题讨论】:

  • 如果你必须使用浏览器嗅探,默认发送好的页面,只发送绝育版本给已知的坏浏览器。
  • 一个欺骗他的用户代理的人显然 想要 得到那个特定的 CSS。为什么要对用户进行二次猜测?

标签: php css user-agent


【解决方案1】:

恕我直言 - 使用 IE 条件 cmets。与服务器上的处理相比,它们要快得多!考虑一下,如果您有 100 个客户端在您的服务器上处理此问题,那么与委派给这 100 个客户端进行渲染和处理相比,您的服务器会变慢。

即使你缓存它而不是每次都在服务器上渲染它也不值得服务器负载。

【讨论】:

  • 谢谢 Mauris,但我已经有了脚本。只是想知道使用 PHP 与即条件 cmets 的意见。 =)
  • 使用 IE 条件 cmets。与服务器上的处理相比,它们要快得多!想想如果你有 100 个客户端在你的服务器上处理这个,与委派给这 100 个客户端相比,你的服务器会变慢。
  • 我将使用条件 cmets,因为 $_SERVER 变量是“肮脏的”,正如 AnonJr 在下面的 cmets 中所述。
【解决方案2】:

您希望每次请求页面时都进行字符串比较吗?我不会。我会把它留给浏览器。

【讨论】:

  • 那是对ie-conditionals 的投票吗?字符串比较非常普通和微小。
【解决方案3】:

作为替代方案,对我来说效果很好,您可以使用css_browser_selector.js。有了它,你的样式表看起来更像这样:

.ie7 div {
    color: red; /* target ie7 */
}

.ie6 div {
    color: green; /* target ie6 */
}

【讨论】:

    猜你喜欢
    • 2012-02-10
    • 2013-10-27
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 2011-09-09
    相关资源
    最近更新 更多