$.support

$.support( ) 1.3追加

戻り値:Object

各ブラウザの機能やバグの存在を表すプロパティのコレクションです。主にjQueryの内部使用を目的としており、ページ起動時のパフォーマンスを向上させるために内部で不要になったときに、特定のプロパティが削除される可能性があります。

$.browserからユーザーエージェントを調べ、実行されているブラウザによってページ処理を切り替えるよりも、 各挙動の特徴を調べてページ処理を切り替えることをお勧めします。 下記サイトにて、挙動の特徴を見極める例が紹介されています。(英文)

もし、プロジェクトで各挙動の特徴を見極める必要がある場合、$.supportの代わりに Modernizr のような、外部ライブラリを使用することを強く推奨します。

Key 説明
ajax ブラウザがXMLHttpRequestを生成できればtrueです。
boxModel ページが、W3C CSS Box Model(英文)に 準拠してレンダリングされていればtrueです。 IE6と7のQuirks(互換)Mode時には、falseになります。 この値はDocumentの読み込みが完了するまでは、nullになります。
changeBubbles changeイベントが W3C DOM event model(英文) で要求されているDOMツリーのバブルアップを行う場合にtrueです。 (現在IEはfalseで、jQueryが擬似的にバブリングを行なっています。)
checkClone document fragmentsにて、ブラウザがradio要素、checkbox要素のチェック状態を正確に複製できればtrueになります。
checkOn checkbox要素にvalueが未指定の場合、'on'が自動的に割り当てられる場合にtrueです。
cors ブラウザがXMLHttpRequestを生成でき、そのオブジェクトがwithCredentialsプロパティを持っていればtrueです。 corsがサポートされていない環境で、クロスドメインXHRリクエストを許可し、クロスドメインリクエストを実行するには $.support.cors = true;を行なってください。
Cross-Origin Resource Sharing(英文)
cssFloat CSSのfloat値を含むプロパティ名が.cssFloatである場合にtrueです。 (現在IEはfalseで、代わりにstyleFloatが使用されています。)
hrefNormalized .getAttribute()がhref属性の値を変更せずに(相対パスが指定されていれば、相対パスのまま)取得する場合にtrueです。 (現在IEでは、絶対パスに変更してしまうためfalseです。)
DOM l3 spec(英文)
htmlSerialize ブラウザが<link>要素を.innerHTMLプロパティを使用して、シリアライズ、挿入をすることが出来ればtrueです。
(現在IEでは、falseです。) HTML5 WD(英文)
leadingWhitespace ブラウザが.innerHTMLにて指定された通り、正確(先頭の空白も正しく保持)にコンテンツを挿入することが出来ればtrueです。 (現在IE6〜8でfalseです。)
noCloneChecked 複製したDOM要素が.checked(展開?)の状態までコピーすればtrueです。 (現在IEでは、falseです。)(jQuery1.5.1追加)
noCloneEvent 複製したDOM要素がイベントハンドラまでをコピーしない場合にtrueです。 (現在IEでは、falseです。)
DOM l2 spec
opacity スタイルのopacityプロパティを適切に処理できればtrueです。現在IEではfalseで、代わりにalphaを使用します。
CSS3 spec
optDisabled disabled状態のselect要素内のoption要素が、自動的にdisabledにならない場合にtrueです。
HTML5 WD
optSelected デフォルトで選択されている<option>要素の、selectedプロパティが機能している場合にtrueです。
HTML5 WD
scriptEval() ※このメソッドはjQuery1.6で廃止になりました。
.appendChild()と.createTextNode()のような、標準的なDOM操作メソッドを使用して、 scriptをDocument内に挿入した際に、それが評価、実行される場合にtrueです。 (現在IEでは、falseです。.textを使用して、実行するscriptを挿入します。)
また、jQuery1.5.1より前のバージョンでは、静的なプロパティ(scriptEval)でした。 メソッドへの変更は、inline-scriptのセキュリティポリシー違反を回避するために、最初のテストを遅延させて実行することを可能にしました。
HTML5 WD
style DOMレベル2の仕様で要求された要素のインラインスタイルが、styleの属性によって アクセスすることができればtrueです。 この場合、.getAttribute('style')によって値を取得することが出来ます。 IEでは.cssTextを使用します。
DOM l2 Style spec
submitBubbles submitイベントが W3C DOM event model によって要求されているDOMツリーのバブルアップを行う場合にtrueです。 (現在、IEではfalseです。jQueryが擬似的にバブリングを行なっています。)
tbody 空の<table>要素が<tbody>無しで存在出来る場合にtrueです。 HTMLの仕様では、このサブ要素は任意のためブラウザが完全にHTML仕様に準拠したものであるならば、 このプロパティはtrueであるべきです。 もし、このプロパティがfalseの場合、暗黙的に<tbody>が挿入されることを考慮する必要があります。 (現在、IEではfalseです。もし、innerHTML使用時にtbodyが含まれていなかった場合、自動的に挿入されます。)
HTML5 spec

デモ

$.supportのプロパティのキーと値を列挙します。

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<style>
  body {font-size:12px;}
  table {border: 1px solid #AAA; border-left: 0; border-collapse: separate; border-spacing: 0;}
  th, td {border-left: 1px solid #AAA;}
  td {border-top: 1px solid #AAA;}
  th {border-top: 0;}
</style>
</head>
<body>
<div id="support"></p>
<script>

var props = [];
var table = '';
/* $.supportのプロパティを取得 */
$.each($.support, function(key, value){
  props.push({key:key, value:value});
});

/* 取得したプロパティをアルファベット順にソート */
props.sort(function(a, b){
  return a.key > b.key ? 1 : -1;
});

/* テーブルにして出力 */
$.each(props, function(){
  table += '<tr>';
  table += '<td>' + this.key + '</td>';
  table += '<td>' + this.value + '</td>';
  table += '</tr>';
});
table = '<table>' + '<th>キー</th><th>値</th>' + table + '</table>'
$('#support').append(table);
</script>
</body>
</html>

 Back to top

© 2010 - 2017 STUDIO KINGDOM