javascript-如何在浏览器版本条件(IE 10及更高版本)中使用元标记?
作者:互联网
我正在使用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.$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,因此此代码没有任何效果.
还有其他方法吗?
解决方法:
您可以使用带注释的条件注释
<!--[if gt IE 9]><!-->
<meta http-equiv="X-UA-Compatible" content="IE=10" />
<!--<![endif]-->
这样,ie10及更高版本将具有该标签,而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的链接以进行说明.
标签:conditional-comments,internet-explorer,meta-tags,html,javascript 来源: https://codeday.me/bug/20191119/2038662.html