任何人对如何使用jquery.support测试IE6(而不是IE7)的特定内容有任何想法?
我的问题是IE6支持:仅为锚元素悬停psuedo-class,而IE7确实支持所有元素(如FF,Chrome等)。所以我想做一些特殊的事情,以防浏览器不支持:悬停所有元素...因此我需要一种方法来测试这个功能。 (不想使用jQuery.browser)。有什么想法吗?
答案 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!");
}