我正在使用IE11。如果浏览器是IE11,我必须强制浏览器充当IE 10。 由于微软取消了对条件评论的支持,我很难找到方法。 我用JavaScript试过这个,
<script language="JavaScript">
function setVersion() {
if (getInternetExplorerVersion() === 11) {
debugger;
$('head').append('<meta http-equiv="X-UA-Compatible" content="IE=10" />');
}
}
//Method to get the IE version
function getInternetExplorerVersion() {
var rv = -1;
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);
}
else if (navigator.appName == 'Netscape') {
var ua = navigator.userAgent;
var re = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat(RegExp.$1);
}
return rv;
}
</script>
现在因为加载页面后正在调用 getVersion ,此代码没有任何效果。 还有其他办法吗?
答案 0 :(得分:3)
你可以使用像这样的评论条件评论
<!--[if gt IE 9]><!-->
<meta http-equiv="X-UA-Compatible" content="IE=10" />
<!--<![endif]-->
以这种方式ie10及以上将有标签,而不是ie9和under将不会导致条件不满足。
示例:
<!--[if lte IE 8]>
<script type="text/javascript" src="/app.ie8.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
<script type="text/javascript" src="/app.ie8.js" defer></script>
<!--<![endif]-->
将加载ie8 js而不延迟,而在ie9及以上(以及所有其他浏览器)将加载脚本并推迟忽略条件,因为它们计为注释
有Wiki的链接以获得解释。
答案 1 :(得分:0)
如果浏览器是IE11,我必须强制浏览器充当IE 10。
为什么不在没有任何条件的情况下使用元标记(或http-header)?
IE9-不能充当IE10并且会忽略它
IE10将充当IE10 i。即本身
IE11将根据您的需要充当IE10
不确定Microsoft Edge
所有其他浏览器都会忽略它。
我正在努力想出办法
检测模式的最佳方法是document.documenMode
,但对于元标记来说为时已晚。