8

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

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

除了好的旧 IE 之外,它在所有浏览器中都能很好地工作。我知道我可以编写一些 jQuery 来在鼠标悬停/移出时添加和删除一个类,但我不希望妨碍(尽管如此轻微)所有其他:hover正确支持的浏览器 - 所以我只想应用这个原生不支持纯 CSS 解决方案的浏览器的 JS 行为。

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

$.supportIE6 和 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没有接近更换它时,你应该如何停止使用?

4

1 回答 1

5

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

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

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

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

于 2009-10-05T23:53:17.030 回答