使用jQuery.support检测IE6

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

我的问题是,IE6支持:hoverpsuedo类只锚元素和IE7确实支持所有元素(如FF,铬等)。 所以我想做一些特殊的事情,如果浏览器不支持:hover所有元素…因此我需要一种方法来testing这个function。 (不想使用jQuery.browser)。 有任何想法吗?

虽然最好的做法是检查function支持,而不是用户代理,但是没有简单的方法来检查使用JavaScript支持CSS属性。 我build议你按照上面的海报build议使用条件注释或使用jQuery.browser。 一个简单的实现(未针对性能或错误进行validation)可能如下所示:

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类添加到你想要hoverCSS效果的任何元素。 在你的CSS中,添加这样的规则:

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

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

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

Thickbox使用

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

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

通常是创build一个菜单。 如果是的话,我强烈build议你省去一些头痛的问题,并使用像superfish这样的插件,或者select其中的一种。

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

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

会做你想要的。

我会使用任何:hover – http://www.xs4all.nl/~peterned/csshover.html

它使用行为,对我来说效果很好。

只是为了好玩(不使用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'; } ?> 

jQuery.support没有属性可以检测到:hover支持http://docs.jquery.com/Utilities/jQuery.support

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

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