标签:conditional-comments internet-explorer meta-tags html javascript
我正在使用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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。