我需要运行仅适用于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我发现,早期的IE版本不具备条件注释了。
然后我试图改变线路4与此一
<!--[if gte IE 9]><!--><html class="ie"> <!--<![endif]-->
但是,我也看到了,即类不是IE浏览器。
是否有IE等浏览器来区分一个聪明的办法?
谢谢!
回答
您可以使用JavaScript来读取window.navigator
财产和获得userAgent
从像这样生成的字符串:
var agent = window.navigator.userAgent;
if ( agent.indexOf('Trident') > -1 )
document.querySelector('body').classList.add('ie-css');
这里演示
如果你需要的版本
您可以使用UA解析器JS得到一个不错的对象的所有细节。 这将是比上面一个“更安全”的做法,但必须包括图书馆,以及:
var parser = new UAParser(),
browser = parser.getBrowser();
console.log( browser.name, browser.major ); // -> "IE 10.0"
这里演示
警告
你可能会意识到这一点,但使用浏览器嗅探是一个古老的和坏的技术在野外。 这导致了传统和难以管理的代码非常快。 尽量避免检测IE的版本 。
使用特征检测来代替。
在一般情况下,你不应该试图检测用户是否在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 。
你不应该需要IE等浏览器的新版本区别开来。 IE浏览器是一个非常完善的产品,这些天,就像符合web标准Chrome或Firefox浏览器。
有条件的意见只是用于IE 9及以下。
如果您需要检测的东西特别的特征检测是要走的路。 这可以用于所有的浏览器。
看一看的Modernizr