2009-10-05 4 views
8

私のウェブページでは、私はこのCSSを持っています:jQuery.browserは廃止されましたが、どのように.supportを使用しますか?

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

良い古いIE以外のすべてのブラウザでうまく動作します。マウスの上/下にあるクラスを追加したり削除したりするためのjQueryを書くことができますが、:hoverを正しくサポートする他のすべてのブラウザをハンディキャップしないことを望みます。純粋なCSSソリューションをネイティブにサポートしていないブラウザのこのJSの動作。

もちろん、$.browserは非難されていることを知っています。ブラウザのスニッフィングは悪いことですが、他のすべての質問には「あなたがチェックしてはいけないブラウザでは、の機能を確認してください。これは、これらの人々が住んでいる魔法の妖精の土地でうまくいいですが、私たちの残りの部分は、IE6やその他のブラウザでサイトを正常に動作させる必要があります。

&はIE6 &のように見える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のユーザーにその機能を与えないか、すべてのブラウザでシミュレートすることによって、おそらく逃げることができますが、それは重要ではありません。 $.supportがそれに置き換わっていないとき、$.browserの使用をやめようとしていますか?

答えて

5

簡単な回答 - 状況によっては、これは、私があなたが仕事を完了させるのに必要な手段を使用すべきだと主張するような状況の1つです。多くの一般的なプラグイン(datepickersとモーダルスクリプト)これを行う必要があります(例えば、iframeシム)またはスクリプトは、特定の(たとえ古い)ブラウザで正しく動作しません。

しかし、$ .browserのようにuserAgentを盗聴するのではなく、IE6を検出するオブジェクトを検出するか、CCを使用します。

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

一般的なIE jsファイルをフィードし、そのバージョンに基づいてその内部にブランチアウトすることもできます。

+1

+1これはおそらくユーザーエージェントのスニッフィングよりも信頼性が高いためですが、コードにフォワード互換性を持たせたいという問題は解決しません。IE9が出てきてXをサポートし、IE単なる条件付きコメントは機能しません。 (私はあなたが '' IE <9 'なら何かをすることができると知っていますが、それでもスニッフィングしています.. – nickf

+0

CCの優位性は、偽装できないか、少なくともレジストリをハッキングしない限りです。 $ .browserを非難しませんでした。Resig氏に電子メールの長いリストを送っていたに違いありません。 – alex

関連する問題