【问题标题】:How to detect IE7 with jQuery?如何使用 jQuery 检测 IE7?
【发布时间】:2010-07-02 12:08:19
【问题描述】:

如何使用 jQuery.browser 检测带有 jQ​​uery 的 IE7?

【问题讨论】:

  • 浏览器检测=代码气味
  • 反问:在 IE7 中你需要什么不同的地方?
  • @Marcel 如果您正在检查浏览器以使页面布局或行为更好地工作,那么欺骗用户代理字符串可以破坏代码。如果用户使用 Firebug 编辑页面并让所有按钮停止工作也可以;这显然是他们在做的事情只是为了自娱自乐:-)
  • @Pointy – 哈哈,是的,你说得对。 :)
  • @spender 欢迎来到现实世界。

标签: jquery browser internet-explorer internet-explorer-7


【解决方案1】:

找到方法

if ($.browser.msie  && parseInt($.browser.version, 10) === 7) {
  alert('IE7'); 
} else {
  alert('Non IE7');
}

--更新

请注意$.browserremoved from jQuery 1.9

【讨论】:

  • 请参阅文档中的 $.browser:“包含用户代理的标志,从 navigator.userAgent 读取。我们建议不要使用此属性;请尝试改用特征检测(请参阅 jQuery.support)。 jQuery.browser 可能会在 jQuery 的未来版本中移动到插件中。”
  • $.browser:从 jQuery 1.4 开始,我们一直在宣传通过用户代理字符串检测浏览器是一个坏主意。然而,通过继续提供 $.browser,我们一直是不良做法的推动者。从 jQuery 1.9 开始,我们将完全删除它,您需要使用 1.9 兼容插件。
  • 现在已从 jQuery 1.9 中删除 - 请参阅下面的替代方案。
  • 在 IE 的开发者工具中,如果选择文档模式为 7 进行兼容性检查,您的代码将无法捕捉到该问题,您可以在 if 语句中添加 document.documentmode 来修复它。 if ($.browser.msie && (parseInt($.browser.version, 10) == 7 || document.documentMode == 7))
【解决方案2】:

$.browser。此功能已被弃用,您应该考虑使用$.support

要回答这个问题,这是一种坚如磐石的技术,主要用于样式表,但也可以轻松用于检查浏览器版本,或者最好仍然是选择器的一部分。

  1. 使用以下标记(来自 HTML5 Boilerplate)

    <!--[if lt IE 7]><html class="ie6"><![endif]-->
    <!--[if IE 7]><html class="ie7"><![endif]-->
    <!--[if IE 8]><html class="ie8"><![endif]-->
    <!--[if gt IE 8]><!--><html><!--<![endif]-->
    <head>
    
  2. 在 jQuery 中使用带有 hasClass 的选择器

    $('html').hasClass('ie7');
    $('html.ie7 .myclass').dostuff();
    
  3. 并在 css 中用作普通选择器的一部分

    .mydiv {max-height:50px}
    .ie6 .mydiv {height:50px} /* ie6 max-height fix */
    

【讨论】:

  • @Marcel 有一些破坏行为,特征检测很难实现。大多数是布局错误。另一个例子是 IE 的问题是图像的不透明度不同,这些图像本身就是带有 alpha 通道的 PNG 图像。你到底如何“特征检测”这个问题?
  • @Pointy – 啊,是的,当然,还有 IE 6 中的悬停问题,还有……也就是说,我会使用条件 cmets 来包含不同的 JavaScript 代码块。这比测试用户代理字符串更可靠。
  • 当你在带有 markdown 的列表中执行代码 sn-ps 时,代码需要向右多走四个空格 :)
  • @Pointy - simples - 你在一个红色方块上放置一个 alpha png,然后你弹出一个窗口并询问用户他们是否看到红色。如果他们没有,你有一个 alpha 问题;)
  • @JamesWestgate 或者他们有红绿色盲问题...影响 5-10% 的用户 ;)
【解决方案3】:

所有其他考虑:

if ($.browser.msie && $.browser.version == 7) {

    //do something

    };

应该可以。这是否是正确的处理方式是另一个问题。

【讨论】:

  • 现在已从 jQuery 1.9 中删除
猜你喜欢
  • 1970-01-01
  • 2012-02-12
  • 1970-01-01
  • 2010-11-18
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 2012-01-03
相关资源
最近更新 更多