使用jQuery.support检测IE6

时间:2009-02-25 00:30:34

标签: jquery browser-detection

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

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

8 个答案:

答案 0 :(得分: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');
    }
}

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

ul li:hover, ul li.over { rules here }

答案 1 :(得分:21)

您可以使用特定于Microsoft Internet Explorer的Conditional Comment将特定代码应用于IE6。

<!--[if IE 6]>
  Special instructions for IE 6 here... e.g.
  <script>...hook hover event logic here...</script>
<![endif]-->

答案 2 :(得分:20)

Thickbox使用

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

答案 3 :(得分:2)

这是我们应该退后一步并询问你为什么要这样做的一个例子。

通常是创建菜单。如果是这样,我强烈建议你为自己节省一些麻烦,并使用像superfish这样的插件或其中一种替代方案。

如果不是,我建议你使用jQuery hover()事件监听器。例如:

$("td").hover(function() {
  $(this).addClass("hover");
}, function() {
  $(this).removeClass("hover");
});

会做你想做的事。

答案 4 :(得分:1)

我会使用Whatever:hover - http://www.xs4all.nl/~peterned/csshover.html

它使用行为并且适合我。

答案 5 :(得分:1)

只是为了好玩(不使用jQuery.support):

$(document).ready(function(){
    if(/msie|MSIE 6/.test(navigator.userAgent)){
        alert('OMG im using IE6');
    }
});

你也可以通过php

来做
<?
if(preg_match('/\bmsie 6/i', $ua) && !preg_match('/\bopera/i', $ua)){
    echo 'OMG im using IE6';
}
?>

答案 6 :(得分:0)

jQuery.support没有要检测的属性:悬停支持 http://docs.jquery.com/Utilities/jQuery.support

但是你可以简单地使用hover()事件 http://docs.jquery.com/Events/hover

答案 7 :(得分:-2)

if ($.browser.msie && parseInt($.browser.version, 10) == 6) {
  alert("I'm not dead yet!"); 
}