34

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

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

4

8 回答 8

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 }
于 2009-02-25T01:28:56.200 回答
21

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

<!--[if IE 6]>
  Special instructions for IE 6 here... e.g.
  <script>...hook hover event logic here...</script>
<![endif]-->
于 2009-02-25T01:14:13.597 回答
20

厚箱用途

if(typeof document.body.style.maxHeight === "undefined") {
    alert('ie6');
} else {
    alert('other');
}
于 2009-04-17T20:47:47.497 回答
2

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

通常是创建一个菜单。如果是这样,我强烈建议您省去一些麻烦,并使用像superfish这样的插件或众多替代方案之一。

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

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

会做你想做的。

于 2009-02-25T01:28:00.133 回答
1

我会使用任何东西:悬停 - http://www.xs4all.nl/~peterned/csshover.html

它使用行为并且对我很有效。

于 2009-06-19T21:39:11.483 回答
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';
}
?>
于 2011-12-03T19:52:54.660 回答
0

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

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

于 2009-02-25T01:12:37.330 回答
-2
if ($.browser.msie && parseInt($.browser.version, 10) == 6) {
  alert("I'm not dead yet!"); 
}
于 2011-11-29T12:40:50.950 回答