8

私のWebページには、次の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

簡単な答え-状況によってはできない場合もありますが、これは、仕事を遂行するために必要なあらゆる手段を使用する必要があると私が主張する状況の1つです。多くの一般的なプラグイン(datepickersおよびモーダルスクリプト)はこれを行う必要があります(たとえば、iframe shim)。そうしないと、スクリプトは特定の(古いものではありますが)ブラウザーでは正しく機能しません。

ただし、$。browserのようにuserAgentをスニッフィングする代わりに、IE6のオブジェクト検出またはCCを使用します。

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

また、一般的なIE jsファイルをフィードして、バージョンに基づいてそのファイル内で分岐することもできます。

于 2009-10-05T23:53:17.030 に答える