$.support
- $.support( ) 1.3追加
- デモ
$.support( ) 1.3追加
戻り値:Object
各ブラウザの機能やバグの存在を表すプロパティのコレクションです。主にjQueryの内部使用を目的としており、ページ起動時のパフォーマンスを向上させるために内部で不要になったときに、特定のプロパティが削除される可能性があります。
$.browserからユーザーエージェントを調べ、実行されているブラウザによってページ処理を切り替えるよりも、 各挙動の特徴を調べてページ処理を切り替えることをお勧めします。 下記サイトにて、挙動の特徴を見極める例が紹介されています。(英文)
- peter.michaux.ca - Feature Detection: State of the Art Browser Scripting
- Browser Detection (and What to Do Instead)
- kangax/cft
もし、プロジェクトで各挙動の特徴を見極める必要がある場合、$.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>
© 2010 - 2017 STUDIO KINGDOM