2009-02-25 47 views
34

任何人都有关于如何使用jquery.support测试特定于IE6(而不是IE7)的任何想法?使用jQuery.support检测IE6

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

+0

没有下面的答案竟然回答了这个问题!这是荒谬的。 – vsync 2013-02-20 16:34:16

回答

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 } 
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]--> 
+0

这可能是最好的选择,只是想知道是否有人有另一种方式来做到这一点...因为jQuery文档中提到“jQuery带有许多属性,你应该随时添加你自己的。”无论如何感谢 – Jaime 2009-02-25 01:22:43

+0

如果您要动态加载脚本或在动态创建的元素(例如模态)上运行代码,这将不起作用。 – KyleFarris 2013-07-23 18:52:34

+0

@KyleFarris取决于...你可以检查IE6与条件注释,如果你满足条件,根据需要为所有现有的DOM元素和未来元素使用`.live()`处理程序(在jQuery的最高设置jQuery的处理程序从jQuery的V1.8)或首选'。对()`1.7+ http://api.jquery.com/on/ – scunliffe 2013-07-23 20:38:44

2

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

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

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

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

会做你想做的。

+0

我做一个自定义的下拉列表中具有潜在的很多项目,所以我想如果是 Jaime 2009-02-25 01:48:17

+0

速度是:盘旋一个问题?换句话说:支持混合解决方案的复杂性成本是否值得? – cletus 2009-02-25 02:01:07

+0

好问题,可能不是,它只是感觉有点迟缓使用悬停事件 – Jaime 2009-02-25 02:12:11

20

ThickBox的使用

if(typeof document.body.style.maxHeight === "undefined") { 
    alert('ie6'); 
} else { 
    alert('other'); 
} 
-2
if ($.browser.msie && parseInt($.browser.version, 10) == 6) { 
    alert("I'm not dead yet!"); 
} 
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'; 
} 
?>