我正在更新我的网站设计,因为它在IE10中无法正常工作。
我正在使用条件注释和JavaScript的组合来处理IE版本检测,但由于IE10已经放弃了前者而我没有找到理由忽略后者,我在这里寻求帮助。我一直在读这个帖子:
Detect IE version (prior to v9) in JavaScript
但我对JavaScript的了解并不远,所以我不确定是否应该修改我的代码或废弃它并采用和更改该URL中提到的代码(如果是的话,我是怎么做的应该这样做。)
我目前正在使用的代码:
<link rel="stylesheet" type="text/css" href="barebones.css">
<!--[if lte IE 8]>
<link rel="stylesheet" type="text/css" href="ie.css">
<![endif]-->
<!--[if gt IE 8]>
<link rel="stylesheet" type="text/css" href="default.css">
<![endif]-->
<script type="text/javascript">
//<![CDATA[
var appName = window.navigator.appName;
if (appName !== "Microsoft Internet Explorer")
document.write("<link rel=\"stylesheet\" type=\"text\/css\" href=\"default.css\" \/>");//]]>
</script>
如果有帮助我可以发布我的网站网址,但我不希望别人认为我想要获得更多的网站流量等。
我知道我目前正在使用的代码可以稍微改进一下,但我宁愿在春季清洁之前让事情有效。
多台机器上的IE10似乎完全忽略了JavaScript,我不知道为什么。 IE9处理得很好。
非常感谢任何帮助。
答案 0 :(得分:5)
最好在处理这类问题时避免“broswer检测”并使用“特征检测”
像http://modernizr.com/这样的库可以帮助您测试浏览器兼容的特定功能,而不是浏览不同版本的浏览器。
话虽如此,IE10往往是符合标准的浏览器。您可以访问http://caniuse.com/并查找各种JavaScript和CSS功能的图表以及所有不同浏览器中支持的功能。
你会发现IE10遵守了很多这些标准。
答案 1 :(得分:2)
虽然我喜欢上面的一些答案,但我知道有时可以通过一系列可能的快速解决方案来解决问题,这有时会产生重大影响。因此,这是另一个我发现效果很好的解决方案:
<script language="javascript" type="text/javascript">
if(Function('/*@cc_on return 10===document.documentMode@*/')()) document.documentElement.className+= ' ie10';
</script>
然后在我添加的相应css文件中实现特定于浏览器的css规则(例如):
.ie10 div{new css rule}
.ie10 div{another new css rule}
答案 2 :(得分:0)
最近我采用css browser selector作为解决方案。它是一个将特定的css类附加到文档根目录的js,因此您可以在css中的浏览器中处理样式差异而不会出现黑客攻击。它虽然很老,但不支持IE10,但正如其他人所说,IE10非常标准。它虽然处理IE6,7和8(你似乎对这些浏览器采取了特殊措施),所以我猜它会适合你。
一般情况下,您应该避免浏览器特定的黑客攻击或类似检查,因为它们很难维护,并且不能保证始终有效。
答案 3 :(得分:0)
由于IE10无法识别条件注释,您需要检测浏览器版本,因此我实现了一个功能:
function getIEVersion() {
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
/*
* sample user-Agent
* "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
*/
//test for MSIE x.x;
var ieversion = new Number(RegExp.$1); // capture x.x portion and store as a number
return ieversion;
}
return -1;
}
alert(getIEVersion());
它返回IE版本的编号。 (例如:10,9,7 ..)