【发布时间】:2010-11-15 07:49:43
【问题描述】:
我试过了:
<!--[if lt IE 6.0]>
HTML TO HIDE FROM IE6
<![endif]-->
但不幸的是,这些东西也被 Firefox 隐藏了。有人有有效的方法吗?我希望这些东西只对 IE6 隐藏
谢谢
【问题讨论】:
标签: html internet-explorer internet-explorer-6
我试过了:
<!--[if lt IE 6.0]>
HTML TO HIDE FROM IE6
<![endif]-->
但不幸的是,这些东西也被 Firefox 隐藏了。有人有有效的方法吗?我希望这些东西只对 IE6 隐藏
谢谢
【问题讨论】:
标签: html internet-explorer internet-explorer-6
对您的问题有点困惑,但这是用于检测 Internet Explorer 版本的 javascript 代码。取自Detecting Internet Explorer More Effectively。将要在 IE6 中隐藏的 HTML 内容添加到一个 div 中,并使用下面的函数将其隐藏。
function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
var rv = -1; // Return value assumes failure.
if (navigator.appName == 'Microsoft Internet Explorer')
{
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat( RegExp.$1 );
}
return rv;
}
function checkVersion()
{
var msg = "You're not using Internet Explorer.";
var ver = getInternetExplorerVersion();
if ( ver > -1 )
{
if ( ver == 6.0 )
**Hide the DIV here**
}
alert( msg );
}
【讨论】:
试试
<!--[if lte IE 6.0]>
在您的 CSS 中,使用 lte(小于或等于)而不是 lt(小于)。
【讨论】:
条件 cmets 根本不应该影响 Firefox,因为它们被注释掉并且浏览器应该忽略它。我会检查您的 Firefox 样式表是否正确并正确嵌入,如下所示:
<link href="/css/main.css" rel="stylesheet" type="text/css" />
<!--[if lt IE 7]>
<link href="/css/ie6.css" rel="stylesheet" type="text/css" media="screen"/>
<![endif]-->
【讨论】:
实际上,与 deceze 的答案相反,您可以使用条件 cmets 向 Internet Explorer 隐藏内容。这些类型的条件 cmets 称为“Downlevel Reveal Conditional Comments”。 (这些不同于用于向 Internet Explorer 显示内容的更常见的 cmets,它们被称为“下层隐藏条件 cmets”)
<!--[if lte IE 6]><![if gte IE 7]><![endif]-->
<!-- This is a bit mad, but code inside here is served to everything
except browsers less than IE7, so all browsers will see this -->
<!--[if lte IE 6]><![endif]><![endif]-->
但是,如果您已经使用低级隐藏条件注释来仅向 IE6 显示 IE6 样式表,那么您最好只使用 CSS 将其隐藏。
我希望这会有所帮助。
【讨论】:
阅读Natalie Downe's answer后,我会这样做:
<!--[if true]><![if !IE]><![endif]-->
<h1>You're not using IE. Well done!</h1>
<!--[if true]><![endif]><![endif]-->
您可以使用 negated conditional cmets 对 IE 隐藏内容,但不能对其他浏览器隐藏内容。
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css"></style>
<script type="text/javascript"></script>
</head>
<body>
<![if !IE]>
<h1>You're not using IE. Well done!</h1>
<![endif]>
</body>
</html>
它会呈现一些无效的标记,但它可以工作。
参考:http://msdn.microsoft.com/en-us/library/ms537512%28VS.85%29.aspx
【讨论】:
Natalie Downe 的回答已经足够好了,但是有一个更短更清晰的版本可以隐藏 IE6(或任何低于 10 的版本)的内容:
<!--[if !IE 6]><!-->IE6 can't see me<!--<![endif]-->
要针对IE6及以下,可以使用
<!--[if gt IE 6]><!-->IE6 and lower can't see me<!--<![endif]-->
如果你只想支持IE10+,你可以使用
<!--[if !IE]><!-->IE9 and lower can't see me<!--<![endif]-->
事实上,IE10+ 不支持条件 cmets。灵感来自Browserhacks。
当然,所有其他浏览器都可以看到内容,因为它都是有效的 HTML。
【讨论】: