Chrome 条件注释

Posted

技术标签:

【中文标题】Chrome 条件注释【英文标题】:Chrome conditional comments 【发布时间】:2010-11-20 12:08:44 【问题描述】:

Chrome 是否有条件 cmets 之类的东西?

与 Firefox 相比,我有一个在 Chrome 中呈现不同的页面。

谢谢

【问题讨论】:

如果您可以指定您的问题,那么它可能会更有帮助。 【参考方案1】:

您可以在您的 CSS 中使用它来定位基于 WebKit 的浏览器

@media screen and (-webkit-min-device-pixel-ratio:0)  

Body 


也许这会有所帮助?

【讨论】:

非 webkit 浏览器没有 -webkit-min-device-pixel-ratio(为零或其他),因此条件的第二部分失败。 这对我有用!但是我还有一个问题,如果这对某些专家来说听起来很愚蠢,请原谅,但是其他浏览器在获得更新后是否会考虑这个问题?前火狐?谢谢 +1 来自我。 @Mbarry:firefox 永远不会采用其中包含“webkit”的 css 属性。这些 CSS 供应商前缀目前设置得很清楚,未来肯定是开放的,有些人会在几年前争论放弃它们,改为“beta”前缀作为实例。不管怎样,他们现在就在这里。【参考方案2】:
<!--[if IE 8]><div id="bodyContainer" class="IE8"><![endif]-->
<!--[if !IE]>--><div id="bodyContainer" class="W3C"><!--<![endif]-->
<script type="text/javascript"> 
    if (navigator.userAgent.toLowerCase().match('chrome') && document.getElementById('bodyContainer'))
        document.getElementById('bodyContainer').className = document.getElementById('bodyContainer').className + " chrome";
</script>

然后您使用 CSS 专门针对 Chrome 调整样式。

【讨论】:

document.getElementById('bodyContainer').className += " chrome";【参考方案3】:

据我所知,只有 Internet Explorer 4-8 支持 html conditional comments 和 Javascript conditional compilation directives。

【讨论】:

【参考方案4】:
<!--[if !IE]>-->

这不仅仅是一个 Chrome 条件注释 - 这会影响所有不是 IE 的浏览器... 火狐,野生动物园等 如果使用 php - 试试这个:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Browsser Detection</title>

<link rel="stylesheet" href="Main.css" type="text/css">

<?php 

$msie        = strpos($_SERVER["HTTP_USER_AGENT"], 'MSIE') ? true : false; 
$firefox    = strpos($_SERVER["HTTP_USER_AGENT"], 'Firefox') ? true : false;
$safari        = strpos($_SERVER["HTTP_USER_AGENT"], 'Safari') ? true : false;
$chrome        = strpos($_SERVER["HTTP_USER_AGENT"], 'Chrome') ? true : false;

if ($msie) 
echo '
<!--[if IE 7]>
<link rel="stylesheet" href="ie7.css" type="text/css">
<![endif]-->
<!--[if IE 8]>
<link rel="stylesheet" href="ie8.css" type="text/css">
<![endif]-->
';

if ($safari) 
echo '<link rel="stylesheet" href="safari.css" type="text/css">';


?>

</head>
<body>

    <br>
    <?php
    if ($firefox)  //Firefox?
    echo 'you are using Firefox!';
    

    if ($safari || $chrome)  // Safari?
    echo 'you are using a webkit powered browser';
    

    if (!$msie)  // Not IE?
    echo '<br>you are not using Internet Explorer<br>';
    
    if ($msie)  // IE?
    echo '<br>you are using Internet Explorer<br>';
    
    ?>

    <br>

</body>
</html>

感谢 John 发帖:http://www.killersites.com/forums/topic/2731/firefox-google-chrome-browser-detecion-using-conditional-comments-hack/

【讨论】:

【参考方案5】:

条件操作将起作用,因为其他浏览器会将 If IE8 块解析为 HTML 注释,而不是 !IE 块,因为它的内部包含在 --> 和

因此,对于所有非 IE 浏览器,body 类确实等于 W3C。

不过,这都是顺便说一句,因为不需要 IE 注释块来将浏览器专门识别为 chrome - JS 块本身会做到这一点,前提是用户当然打开了 JS。

【讨论】:

关掉 JS 的用户太少了,不用管 :-) 我不同意。像 NoScript for Firefox 这样的附加组件比您想象的要普遍得多。 常见于技术负责人和开发人员,而不是妈妈、爸爸和使用网络的普通人。

以上是关于Chrome 条件注释的主要内容,如果未能解决你的问题,请参考以下文章

IE的有条件注释

CSS条件注释

HTML if条件注释

为啥 Chrome 会忽略 IE 条件标签?

能用条件注释改善的IE兼容问题

IE条件注释