有人有任何关于如何使用jquery.support测试IE6特定功能(而不是IE7)的想法吗?
我的问题是,IE6仅支持锚元素的:hover伪类,而IE7支持所有元素的:hover伪类(如FF、Chrome等)。因此,如果浏览器不支持所有元素的:hover,我想要做一些特别处理...因此我需要一种测试此功能的方法。(不想使用jQuery.browser)。有任何想法吗?
有人有任何关于如何使用jquery.support测试IE6特定功能(而不是IE7)的想法吗?
我的问题是,IE6仅支持锚元素的:hover伪类,而IE7支持所有元素的:hover伪类(如FF、Chrome等)。因此,如果浏览器不支持所有元素的:hover,我想要做一些特别处理...因此我需要一种测试此功能的方法。(不想使用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');
}
}
在您的标记中,向您想要悬停CSS效果的任何元素添加.jshover类。 在您的CSS中,添加以下规则:
ul li:hover, ul li.over { rules here }
您可以使用微软专用的条件注释来将特定代码应用于仅限于IE6。
<!--[if IE 6]>
Special instructions for IE 6 here... e.g.
<script>...hook hover event logic here...</script>
<![endif]-->
.live()
处理程序(在jQuery v1.8之前)或首选的.on()
(从jQuery 1.7+开始)http://api.jquery.com/on/ - scunliffeThickbox使用
if(typeof document.body.style.maxHeight === "undefined") {
alert('ie6');
} else {
alert('other');
}
$("td").hover(function() {
$(this).addClass("hover");
}, function() {
$(this).removeClass("hover");
});
仅仅是为了好玩(不使用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';
}
?>
我会使用Whatever:hover - http://www.xs4all.nl/~peterned/csshover.html
它使用行为并且对我很有效。
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!");
}
$.browser
在 jQuery 中已经不存在了。 - Synchro