任何人对如何使用 jquery.support 测试特定于 IE6(而不是 IE7)的东西有任何想法吗?
我的问题是 IE6 仅支持 :hover psuedo-class 锚元素,而 IE7 支持所有元素(如 FF、Chrome 等)。所以我想做一些特别的事情,以防浏览器不支持:悬停所有元素......因此我需要一种方法来测试这个功能。(不想使用 jQuery.browser)。有任何想法吗?
任何人对如何使用 jquery.support 测试特定于 IE6(而不是 IE7)的东西有任何想法吗?
我的问题是 IE6 仅支持 :hover psuedo-class 锚元素,而 IE7 支持所有元素(如 FF、Chrome 等)。所以我想做一些特别的事情,以防浏览器不支持:悬停所有元素......因此我需要一种方法来测试这个功能。(不想使用 jQuery.browser)。有任何想法吗?
虽然检查功能支持而不是用户代理是一种很好的做法,但没有简单的方法来检查诸如使用 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 }
您可以使用 Microsoft Internet Explorer 特定的条件注释将特定代码仅应用于 IE6。
<!--[if IE 6]>
Special instructions for IE 6 here... e.g.
<script>...hook hover event logic here...</script>
<![endif]-->
厚箱用途
if(typeof document.body.style.maxHeight === "undefined") {
alert('ie6');
} else {
alert('other');
}
这是我们应该退后一步并询问您为什么这样做的一个示例。
通常是创建一个菜单。如果是这样,我强烈建议您省去一些麻烦,并使用像superfish这样的插件或众多替代方案之一。
如果不是,我建议您使用jQuery hover()事件监听器。例如:
$("td").hover(function() {
$(this).addClass("hover");
}, function() {
$(this).removeClass("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 没有要检测的属性:悬停支持 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!");
}