Utilities/API/jQuery
jQuery.support
jQuery 1.3より。
ブラウザごとに異なる機能や、バグによって正常に動かない機能などの情報を返します。
jQueryが幾つかの機能について返しますが、自分の用途にあわせて自由にここにエントリを追加して下さい。
ここでjQueryが返すものの殆どは根本的なレベルのものなので、日々の開発において直接役立つものであるのかは疑わしいからです。
しかし、これらは開発の核になるものなので間接的には利用していることが多いでしょう。そういったものの組み合わせで、使い易いエントリを算出することが出来ると思います。
ブラウザごとの機能の違いは、各種調査に基づいています。この問題に関しては、例えば以下のサイトで詳しく説明されています。(英語)
jQuery.supportは、以下のようなエントリを持ちます。
ブラウザごとに異なる機能や、バグによって正常に動かない機能などの情報を返します。
jQueryが幾つかの機能について返しますが、自分の用途にあわせて自由にここにエントリを追加して下さい。
ここでjQueryが返すものの殆どは根本的なレベルのものなので、日々の開発において直接役立つものであるのかは疑わしいからです。
しかし、これらは開発の核になるものなので間接的には利用していることが多いでしょう。そういったものの組み合わせで、使い易いエントリを算出することが出来ると思います。
ブラウザごとの機能の違いは、各種調査に基づいています。この問題に関しては、例えば以下のサイトで詳しく説明されています。(英語)
- http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting
- http://yura.thinkweb2.com/cft/
- http://www.jibbering.com/faq/faq_notes/not_browser_detect.html
jQuery.supportは、以下のようなエントリを持ちます。
- boxModel
- ブラウザがW3CのCSS Box Modelに従っていれば、trueを返します。例えばIE6/7でQuirks Modeを用いている場合、この値はfalseを返します。この値はdocument.readyが呼ばれる前には常にnullになっています。
- cssFloat
- floatの値を取得する場合にstyle.cssFloatが使えればtrueを返します。例えば現時点でのIEではcssFloatではなくstyleFloatを用いるため、falseを返します。
- hrefNormalized
- hrefの値を取得する際に、属性値をそのまま返す場合はtrueになります。現時点のIEではURLが標準化されるため、falseが返ります。
- htmlSerialize
- innerHTMLを用いた際に、serializeされた値を返すならばtrueです。現時点のIEではfalseが返ります。
- leadingWhitespace
- innerHTMLで、先頭に空白があった場合にそれを残して返すブラウザであればtrueになります。IE6~8ではfalseになります。
- noCloneEvent
- 要素をcloneした際に、元の要素が持っていたイベントハンドラも同時にコピーしないブラウザであればtrueになります。現時点のIEではfalseになります。
- objectAll
- getElementsByTagName("*")を実行した際に、全ての要素を返す挙動をするブラウザであればtrueになります。現時点のIEではfalseになります。
- opacity
- opacityスタイルで透明度を指定する機能を実装しているブラウザであればtrueを返します。現時点のIEではopacityではなくalpha filterを用いるため、falseになります。
- scriptEval
- appendChildやcreateTextNodeでdocumentを追加した際に、含まれるscriptを実行するブラウザであればtrueになります。現時点でのIEはfalseとなり、scriptを実行しながら追加したい場合は.textを用いることになります。
- style
- getAttribute("style")で要素に記述されたstyle属性値を取得できるブラウザであればtrueを返します。現時点のIEではfalseとなり、styleではなくcssTextを使います。
- tbody
- tableタグを用いる際に、tbody要素が無い状態を許可するブラウザであればtrueになります。現時点のIEではこれが許されておらず、タグ上にtbody要素が無かった場合は自動的に付加されるため、falseとなります。
サンプル
サンプル1
このブラウザのサポート状況を表示します。
$.each($.support, function(key, val){ $("dl").append("<dt>"+key+"</dt><dd>"+val+"</dd>"); });
[全コードを表示]
[実行結果を単体で表示]