【问题标题】:Detect older IE versions检测较旧的 IE 版本
【发布时间】:2011-11-06 05:44:37
【问题描述】:

我需要检测用户是否从 jQuery 插件运行旧版本的 IE(IE9 可以),因此我无法控制 HTML。

不鼓励我们解析用户代理字符串并使用$.browser.msie$.support 方法也没有解决问题。

所以,我发现这是可行的,但我不确定这是否是“好习惯”。

$('body').append('<!--[if lte IE 8]><script>$("body").addClass("oldie");</script><![endif]-->');
var old_ie = $('body').is('.oldie');

你会使用这种方法还是坚持解析用户代理字符串(我需要弄清楚它是否是 IE 并获取版本号)?

【问题讨论】:

    标签: jquery internet-explorer browser-support


    【解决方案1】:

    你可以运行这个

    var ie = (function () {
        var undef, v = 3, div = document.createElement('div');
    
        while (
            div.innerHTML = '<!--[if gt IE '+(++v)+']><i></i><![endif]-->',
            div.getElementsByTagName('i')[0]
        );
    
        return v > 4 ? v : undef;
    }());
    

    检测IE的版本。

    来源:http://ajaxian.com/archives/attack-of-the-ie-conditional-comment

    然后

    if ( ie < 9 ) {
        // do your stuff, for instance:
        window.location = 'http://getfirefox.com'; // :p
    }
    

    【讨论】:

    • 哈哈,我早该知道 James Padolsey 一年多以前就知道了 :) 谢谢!
    • 我记得以前看过 Rangy ......但我认为它不适用于 textareas,也许我需要再看一遍,因为本月有新版本出现。再次感谢!
    【解决方案2】:

    你没有在你的问题中明确提到为什么你特别需要检测 IE9,所以一般来说,以下建议是有效的:

    您不应检测特定浏览器/版本,而应检测特定功能。 Modernizr 是开始寻求帮助的好地方。

    【讨论】:

    • 有时,有些东西 IE 不支持你不能使用 JavaScript 来检查。像 CSS 的东西。
    • 我正在开发的插件需要将插入符号放置在文本区域内... IE9 似乎在不修改插入符号的情况下运行良好,但旧版本无法正常工作。
    【解决方案3】:

    这个怎么样:

    if (!($.browser.msie && $.browser.version < 9.0)) {
        // Apply only to IE8 and lower
    }
    

    请注意,IE8 显示为 IE7

    【讨论】:

    • 我试图避免浏览器嗅探,如我的问题中所述。
    • $.browser 已从 1.3 中弃用并从 1.9 中删除
    • 我只是想让未来的读者知道他们正在寻找的答案现在/将来可能行不通。我不明白你的沮丧点
    【解决方案4】:

    https://msdn.microsoft.com/en-us/library/ms537509%28v=vs.85%29.aspx 请参阅上面的链接,这可能是官方答案:) 简而言之,在您的 html 页面中编写以下代码。

    <!--[if gte IE 9]>
    <p>You're using a recent version of Internet Explorer.</p>
    <script type="text/javascript">//do something</script>
    <![endif]-->
    
    <!--[if lt IE 9]>
    <p>Hm. You should upgrade your copy of Internet Explorer.</p>
    <script type="text/javascript">//do something</script>
    <![endif]-->
    
    <![if !IE]>
    <p>You're not using Internet Explorer.</p>
    <script type="text/javascript">//do something</script>
    <![endif]>
    

    【讨论】:

    • 是的,但我问的是如何使用 javascript 以编程方式执行此操作...插件作者不能期望每个页面都有条件 cmets,因此我们必须自己添加它们。
    猜你喜欢
    • 2013-07-05
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    相关资源
    最近更新 更多