【问题标题】:How can I detect IE10 from JS when browser mode is IE9?当浏览器模式为 IE9 时,如何从 JS 中检测 IE10?
【发布时间】:2013-03-27 00:58:38
【问题描述】:

当浏览器为 IE10 时,尽管设置了浏览器模式,但我只需要使用纯 javascript(无框架)进行检测。

一些cmets: - 我确实需要检测浏览器,它不是仅检测功能的选项,因为目的是减轻浏览器错误。 - 我尝试了常见的方法(如 UA 字符串或特征检测)但没有成功,当我将浏览器模式切换到 IE9 时,所有可能暗示在 IE10 中的方面都消失了。

【问题讨论】:

  • 您要缓解的“浏览器错误”到底是什么?
  • 我不确定更改浏览器模式是否会更改内部变量,但您可以使用条件编译并检查@_jscript_version以“10”开头(主要版本)。
  • 在某些情况下,flash 片段不会覆盖整个容器区域,它们会窄 1px。你能详细说明你的解决方案吗,它不像是一个js解决方案。
  • 啊,我明白了。好吧,我添加了一个答案。它确实是一个 Javascript 解决方案
  • 那么完美,效果很好!

标签: javascript internet-explorer cross-browser internet-explorer-10


【解决方案1】:

如果您想检测您正在使用的浏览器,IE 有一个特殊功能,称为条件编译 - http://www.javascriptkit.com/javatutors/conditionalcompile.shtml

要获取版本,您可以使用@_jscript_version。所以在 Javascript 中,我会使用:

<script type="text/javascript">
    var isIE10 = false;
    /*@cc_on
        if (/^10/.test(@_jscript_version)) {
            isIE10 = true;
        }
    @*/
    console.log(isIE10);
</script>

我没有 IE10,但是用 IE9 测试时,它似乎可以工作。如果我将浏览器模式更改为 7 或 8,@_jscript_version 具有真正的浏览器 JScript 版本(在我的情况下它保持为 9)。

要查看 JScript 版本列表,您可以在此处查看它们 - http://en.wikipedia.org/wiki/JScript#Versions。它没有列出 IE10,但我假设它是 10。在 IE9 之前,他们使用的数字与浏览器版本不一致,但从 9 开始可能就在正确的轨道上。你必须看看默认情况下 @_jscript_version 是什么10,但我假设它以“10”开头并且可能有一个次要版本。


更新:

为了避免 cmets 的缩小,您可以使用类似:

var IE = (function () {
    "use strict";

    var ret, isTheBrowser,
        actualVersion,
        jscriptMap, jscriptVersion;

    isTheBrowser = false;
    jscriptMap = {
        "5.5": "5.5",
        "5.6": "6",
        "5.7": "7",
        "5.8": "8",
        "9": "9",
        "10": "10"
    };
    jscriptVersion = new Function("/*@cc_on return @_jscript_version; @*/")();

    if (jscriptVersion !== undefined) {
        isTheBrowser = true;
        actualVersion = jscriptMap[jscriptVersion];
    }

    ret = {
        isTheBrowser: isTheBrowser,
        actualVersion: actualVersion
    };

    return ret;
}());

并访问IE.isTheBrowserIE.actualVersion 之类的属性(从JScript 版本的内部值转换而来)。

【讨论】:

    猜你喜欢
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 2015-11-24
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    相关资源
    最近更新 更多