如何在浏览器版本条件下(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,但对于元标记来说为时已晚。