jQueryで色名を取得する際の注意
Home>Information>jQueryで色名を取得する際の注意
[ JavaScript ] [ jQuery ]
jQueryで、背景色(background-color)を取得して、その背景色によって動作を分岐させる、というようなスクリプトを書くとき、以下のようにして背景色を取得します。
$("#id").css("background-color")
このとき返ってくる値は、各ブラウザによって異なります。
ブラウザ名 | 書式 | ex.白の場合 |
IE,GoogleChrome,Firefox,Safari | RGB形式 | rgb(255,255,255) |
Opera | 16進数 | #ffffff |
クロスブラウザ仕様にするには
rgb(255,255,255)もしくは、#ffffffのどちらか一方だけを判定させると、それに対応していないブラウザは反応しません。
では、以下のように書けばいいかというと、今度はIEとそれ以外のブラウザでの若干の仕様の相違のために動きません。
if ( $("#id").css("background-color") == "rgb(255,255,255)" || $("#id").css("background-color") == "#ffffff") ){ 実行文 }
上記の方法では、GoogleChrome、Firefox、Safari、Operaでは動作するけれど、IEでは動きません。
IEとそれ以外のブラウザでのRGB形式の書式の違い
IEの場合、戻り値は、GoogleChromeやFirefoxなどと同じRGB形式ですが、書式が若干違うため、上記では認識されません。IEの場合の戻り値は、以下のようになります。
rgb(255, 255, 255)
RedとGreenとBlueの値を区切るカンマの後に半角のスペースが入っています。
これを加味したクロスブラウザ設計をするには、この3通りの条件を提示しなければなりません。
if ( $("#id").css("background-color") == "rgb(255,255,255)" || $("#id").css("background-color") == "rgb(255, 255, 255)" || $("#id").css("background-color") == "#ffffff") ){ 実行文 }
関連リンク
- 一定時間で変わる広告(JavaScript/jQuery)
- 一定時間でローテーションする広告(JavaScript/jQuery)
- マウスクリックでテキストを入れ替える(JavaScript/JQuery)
- Informationに戻る
よく読まれている記事
- 右クリックメニューの表示が遅い【Information】
- 画像の一部にリンクを貼る(クリッカブルマップ【Dreamweaver】
- 一定時間でローテーションする広告【JavaScript】
- Dreamweaver【Dreamweaver】
- クリックした画像を拡大・縮小する【JavaScript】
UpDate:2010-2-17