我需要检测 IE6 才能解决缺少 position:fixed 的问题。我一直在使用一个简单的正则表达式:
var isIE6 = /msie|MSIE 6/.test(navigator.userAgent);
这几乎一直有效,除了浏览器声称是 IE6 和 IE7 的用户:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30)
辉煌。
我很想使用jquery.support,但它看起来不支持查询 position:fixed 是否可用。所以我回到检测IE6。
有各种建议的解决方案,例如寻找 maxHeight 的存在。但是这些似乎相当随机并且让我感到害怕 - 如果上面的正则表达式有例外,我怎么能确定 maxHeight 没有例外?
我正在考虑使用条件注释 - 这样至少它会是 IE 本身声称是 IE6,而不是 hack。就像是:
<!--[if IE 6]>
<SCRIPT> var isIE6 = true; </SCRIPT>
<![endif]-->
或者,有一个函数可以直接测试 position:fixed 是否可用,但这似乎有点重。
有什么理由我的条件评论方法不起作用?有更好的方法吗?