如何在浏览器版本条件(IE 10及更高版本)中使用元标记?

时间:2015-09-07 10:20:24

标签: javascript html internet-explorer meta-tags conditional-comments

我正在使用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 ,此代码没有任何效果。 还有其他办法吗?

2 个答案:

答案 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,但对于元标记来说为时已晚。