我只需要为IE运行一些css而不是其他浏览器。 我正在使用条件评论:
<!--[if lt IE 7 ]><html class="ie6 ie"> <![endif]-->
<!--[if IE 7 ]><html class="ie7 ie"> <![endif]-->
<!--[if IE 8 ]><html class="ie8 ie"> <![endif]-->
<!--[if gte IE 9]><html class="ie"> <![endif]-->
<!--[!(IE)]><!--><html class="no-ie"> <!--<![endif]-->
但是这段代码不能用于IE11并且阅读这篇文章http://reference.sitepoint.com/css/conditionalcomments我发现早期的版本不再有条件评论了。
然后我尝试用这个改变第4行
<!--[if gte IE 9]><!--><html class="ie"> <!--<![endif]-->
但是我也可以在ie浏览器中看到ie类。
有区分IE和其他浏览器的智能方法吗?
谢谢!
答案 0 :(得分:2)
通常,您不应该尝试检测用户是否在IE11上。对于大多数用例,IE的最新版本通常与其他浏览器(在HTML,CSS和JS支持方面)相当。
然而,即使是微软也承认,在极少数情况下,您可能需要对其进行唯一识别。为此,他们建议查询用户代理字符串。请参阅http://msdn.microsoft.com/en-us/library/ie/hh869301%28v=vs.85%29.aspx和http://msdn.microsoft.com/en-us/library/ie/ms537503%28v=vs.85%29.aspx。
答案 1 :(得分:2)
您可以使用Javascript来阅读window.navigator
属性,并从结果字符串中获取userAgent
,如下所示:
var agent = window.navigator.userAgent;
if ( agent.indexOf('Trident') > -1 )
document.querySelector('body').classList.add('ie-css');
您可以使用UA Parser JS获取包含所有详细信息的精美对象。这将是比上述更“安全”的方法,但您也必须包括库:
var parser = new UAParser(),
browser = parser.getBrowser();
console.log( browser.name, browser.major ); // -> "IE 10.0"
您可能已经意识到这一点,但使用浏览器嗅探是一项古老而糟糕的技术。它会很快导致遗留和无法管理的代码。 尝试并避免检测IE的版本。
答案 2 :(得分:0)
您不应该区分较新版本的IE和其他浏览器。 IE现在是一款经过改进的产品,与Chrome或Firefox一样符合网络标准。
条件注释仅用于IE 9及以下版本。
如果您需要检测某些特定内容,则可以使用特征检测。这可以用于所有浏览器。