Modernizrは、isEventSupported
の機能を持ち、属性のテストは非常に簡単です(modernizrコードのfunction webforms()
の最初のテストをご覧ください)。
記事、ナビ、ヘッダーなどのタグをサポートする場合は、本当にそのことをテストする必要があるかどうかは疑問です。現時点でIEを残しておけば、article
をサポートするブラウザとそうでないブラウザとの違いは、前者は要素のデフォルトCSSを提供するということです。独自のCSS(display: block;
には、とにかく提供するスタイルを加えたもの)を提供できるだけなので、どこでサポートを検出する必要があるかは分かりません。
あなたはまだ、これらの要素のためのサポートをテストすることに熱心であれば、あなただけのこれらの既定のスタイルを探すことができ、例えば:
function IsHTML5TagSupported(tag) {
var t = document.createElement(tag);
document.body.appendChild(t);
var ret;
if (window.getComputedStyle) ret = window.getComputedStyle(t, null).getPropertyValue("display") == 'block';
if (t.currentStyle) ret = t.currentStyle.display == 'block';
document.body.removeChild(t);
return ret;
}
window.alert(IsHTML5TagSupported('article'));
あなたが実際にスタイルを計算するためのブラウザのために要素を追加する必要があります私はそれがそれをサポートしていないことを確認することができますが、IEのためのcurrentStyle
行を追加しました。明らかにこの特定のアプローチは、ブロックレベルであると想定される要素に対してのみ機能しますが、残りの要素については別のプロパティを参照するように拡張することもできます。もちろん、document.createElement('article')
を呼び出すと、IEは後のarticle
要素にユーザースタイルを適用し、スタイルシートにarticle { display: block; }
があると、すべてのブラウザはarticle
要素を 'サポート'します。
HTML5 parsing algorithmに準拠しているかどうかは、スクリプトで扱っているDOMツリーに影響を与える可能性があり、insert inline SVGのようなことができるかどうかをテストするのがおそらく面白いでしょう。そのためにはThe HTML5 TestのソースコードのtestParsing
関数を見てください。
なぜmodernizrが検出を行うのか見てみませんか? :) –
これらの関数はJavaのように見えます...私は理想的ではないと考えています;)そうでなければ+1。 –
@Ivo:いいえ、そうではありません。 Javaには 'bool'キーワードや' '文字列がありません。 'isHTML5 ...'、または 'html5.supportsAttribute(...) 'でなければならないと言うことを意味します。 – SLaks