如何在浏览器版本条件下(IE 10及以上)使用meta标签?
How to use meta tag in a browser version condition (IE 10 and above)?
我正在使用 IE11。如果浏览器是 IE11,我必须强制浏览器充当 IE 10。
由于 Microsoft 取消了对 条件注释 的支持,我正在努力寻找一种方法。
我用 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.);
}
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.);
}
return rv;
}
</script>
现在因为 getVersion 在加载页面后被调用,这段代码没有任何效果。
还有其他方法吗?
你可以像这样使用带注释的条件注释
<!--[if gt IE 9]><!-->
<meta http-equiv="X-UA-Compatible" content="IE=10" />
<!--<![endif]-->
这样ie10以上会有tag,ie9以下就没有了,不满足条件
示例:
<!--[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 有一个 link 的解释。
I have to force the browser to act as IE 10 with a condition if the browser is IE11.
为什么在没有任何条件的情况下不使用元标记(或 http-header)?
IE9- 不能充当 IE10,将忽略它。
IE10 将充当 IE10 i。 e.本身
IE11 将按照您的意愿充当 IE10
不确定 Microsoft Edge
所有其他浏览器将忽略它。
I'm struggling to figure out a way
检测模式的最佳方法是 document.documenMode
,但对于元标记来说为时已晚。
我正在使用 IE11。如果浏览器是 IE11,我必须强制浏览器充当 IE 10。 由于 Microsoft 取消了对 条件注释 的支持,我正在努力寻找一种方法。 我用 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.);
}
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.);
}
return rv;
}
</script>
现在因为 getVersion 在加载页面后被调用,这段代码没有任何效果。 还有其他方法吗?
你可以像这样使用带注释的条件注释
<!--[if gt IE 9]><!-->
<meta http-equiv="X-UA-Compatible" content="IE=10" />
<!--<![endif]-->
这样ie10以上会有tag,ie9以下就没有了,不满足条件
示例:
<!--[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 有一个 link 的解释。
I have to force the browser to act as IE 10 with a condition if the browser is IE11.
为什么在没有任何条件的情况下不使用元标记(或 http-header)?
IE9- 不能充当 IE10,将忽略它。
IE10 将充当 IE10 i。 e.本身
IE11 将按照您的意愿充当 IE10
不确定 Microsoft Edge
所有其他浏览器将忽略它。
I'm struggling to figure out a way
检测模式的最佳方法是 document.documenMode
,但对于元标记来说为时已晚。