使用jQuery.support检测IE6

Jai*_*ime 34 jquery browser-detection

任何人对如何使用jquery.support测试IE6(而不是IE7)的特定内容有任何想法?

我的问题是IE6支持:仅为锚元素悬停psuedo-class,而IE7确实支持所有元素(如FF,Chrome等).所以我想做一些特殊的事情,以防浏览器不支持:悬停所有元素...因此我需要一种方法来测试这个功能.(不想使用jQuery.browser).有任何想法吗?

Fri*_*ure 55

虽然检查功能支持而不是用户代理是一个好习惯,但是没有简单的方法来检查使用JavaScript支持css属性之类的东西.我建议你按照上面的海报建议使用条件注释或使用jQuery.browser.一个简单的实现(未经过性能或错误验证)可能如下所示:

if ($.browser.msie && $.browser.version.substr(0,1)<7) {
  // search for selectors you want to add hover behavior to
  $('.jshover').hover(
    function() {
      $(this).addClass('over');
    },
    function() {
      $(this).removeClass('over');
    }
}
Run Code Online (Sandbox Code Playgroud)

在您的标记中,将.jshover类添加到您希望悬停css效果的任何元素.在你的css中,添加如下规则:

ul li:hover, ul li.over { rules here }
Run Code Online (Sandbox Code Playgroud)

  • 我不禁要问:`if($ .browser.msie && $ .browser.version.substr(0,1)<7)`如果使用此代码(我认为这不是一个好方法)正在做).当版本10到达架子时会发生什么.substr将返回1,显然小于7.相反,您应该使用parseInt作为alex建议. (8认同)
  • 对于未来的用户,jquery 1.9已经删除了$ .browser,这个答案对于那种情况不起作用. (7认同)
  • 你真的不应该使用$ .browser - 它已被弃用了. (5认同)
  • 我必须同意@jaimedp; 弃用$ .browser而不提供足够的替代方案感觉就像倒退了一步.如果您无法检测css功能或功能检测错误,则_have_可以进行某种浏览器检测. (4认同)
  • scunliffe的答案更好,因为它适用于所有IE6用户,而不是简单的IE6用户启用了Javascript. (2认同)

scu*_*ffe 21

您可以使用Microsoft Internet Explorer特定的条件注释将特定代码应用于IE6.

<!--[if IE 6]>
  Special instructions for IE 6 here... e.g.
  <script>...hook hover event logic here...</script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)


小智 20

Thickbox使用

if(typeof document.body.style.maxHeight === "undefined") {
    alert('ie6');
} else {
    alert('other');
}
Run Code Online (Sandbox Code Playgroud)