不推荐使用jQuery.browser,但是如何使用.support?

时间:2009-10-05 23:51:14

标签: jquery cross-browser sniffing

在我的网页上,我有这个CSS:

tr:hover {
    background-color: #f0f;
}

除了好的旧IE之外,它在所有浏览器中都能很好地工作。我知道我可以写一些jQuery来添加和删除鼠标上/下的一个类,但我不想让所有其他支持:hover的浏览器都有障碍(尽管有点小) - 所以我我希望只为那些本身不支持纯CSS解决方案的浏览器应用这种JS行为。

当然,我们都知道$.browser已被弃用,而且我们都知道浏览器嗅探是一件坏事,SO上的其他问题都有一大堆答案,就像“你不是应该检查浏览器,检查功能“,这些在这些人居住的神奇仙境中一切都很好,但我们其他人需要让我们的网站工作,并在IE6和其他浏览器上看起来很好。

对于IE6和IE,

$.support看起来像这样。 7:

leadingWhitespace: false
tbody:             false
objectAll:         false
htmlSerialize:     false
style:             false
hrefNormalized:    false
opacity:           false
cssFloat:          false
scriptEval:        false
noCloneEvent:      false
boxModel:          true

我究竟应该如何使用这些属性来确定tr:hover是否有效?

是的我知道在这个例子中,它是相当无害的,我可能可以通过不向IE用户提供该功能,或者通过在所有浏览器中模拟它来逃避,但这不是重点。当$.browser没有接近替换它时,您应该如何停止使用$.support

1 个答案:

答案 0 :(得分:5)

简单的答案 - 在某些情况下你不能,这是我认为你应该使用任何必要手段来完成工作的情况之一。许多流行的插件(日期选择器和模态脚本)需要来执行此操作(例如,iframe shim),或者脚本无法正常用于特定的(尽管是旧的)浏览器。

然而,不是像$ .browser那样嗅探userAgent,我会反对检测IE6或使用CC。

<!--[if IE 6]><script src="/js/ie6.js"></script><![endif]-->

您还可以提供一般的IE js文件,然后根据版本在其中分支。