7

Webページでいくつかの新しいHTML5フォーム属性と入力タイプを使用したいと思います。一部のブラウザはすでにそれらをサポートしていますが、他のブラウザはサポートしておらず、決してサポートしません。それが私がModernizrを使いたい理由です-そしてそれが私の問題の始まりでした。

私の理解では、Modernizrだけがポリフィルではなく、ブラウザーが新しいHTML5/CSS3のものに対応しているかどうかをテストできるスクリプトです。必要に応じて、これらの機能を「エミュレート」するポリフィルをロードして、サポートされていない/古いブラウザで使用できるようにすることができます。これは正しいと思いますか?

テスト/ロードについて:Modernizrでポリフィルをロードする正しいまたは最良の方法は何ですか?
ドキュメントで私はこれを見つけました:

Modernizr.load({
  test: Modernizr.geolocation,
  yep : 'geo.js',
  nope: 'geo-polyfill.js'
});

しかし、いくつかのページもこのようにそれを行います:

if (Modernizr.touch){
   // bind to touchstart, touchmove, etc and watch `event.streamId`
} else {
   // bind to normal click, mousemove, etc
}

また、これらの機能がどのように検出されているかを実際に知るにはどうすればよいですか?Modernizr.geolocationすべての機能検出に確かに存在するようなものはありますか?

Modernizr GitHubリポジトリには、ユーザーが提供した機能の検出も多数あります。これらを自分のバージョンのModernizrに実装するにはどうすればよいですか?それとも、ビルダーを使用するのが最善ですか?

Safariでは、HTML5フォームの検証は機能しますが、エラーメッセージを表示するためのUIはありません。基本的に、この機能は半分しか実装されていません。すでにここで述べたように、ModernizrがSafariで誤検知を出すのはそのためです:https ://github.com/Modernizr/Modernizr/issues/266 どうやら誰かがそのようなカスタムテストでこれを修正したようですが、私はまだ使用方法を理解していませんそれ。1

4

2 に答える 2

5

ご覧になっている 2 つの手法はどちらも有効です。

yep/バージョンの場合nope、これは別のファイルから含まれるポリフィルをロードする理想的な方法です。これは Javascript である必要はありません。CSS ファイルでもかまいません。

標準の JSif()ブロックの場合、同じ JS ファイル内にブロック機能に依存するコードがあり、その機能が利用可能かどうかに応じて切り替えたい場合、これはより便利です。

したがって、両方のバリアントにそれぞれの場所があります。

ただし、以前のバージョンの Modernizr では/構文が使用できなかっif()たため、別の JS ファイルを含めるためにブロック オプションが使用されている場合もあります。Yepnope は、実際には完全に独立したライブラリであり、ポリフィル ファイルをロードするための構文を読みやすくするために Modernizr に組み込まれています。yepnope

Modernizr が検出できる機能を知る方法についての質問については、答えはもちろん Modernizr のドキュメントにあります。

ドキュメント ( http://modernizr.com/docs/ ) で、「Modernizr によって検出される機能」というタイトルのセクションを参照してください。これには、検出されたすべての機能のリストと、Modernizr によって付けられた名前が含まれています。

あなたが言及した壊れた機能の検出について - あなたがリンクしたチケットは、ほぼ1年前にクローズされたとマークされていました.チケットのメモから、改善されたテストのコードがメインのModernizrコードに追加されたように見えます. 最新バージョンを実行していることを確認し、これが機能しているかどうかを再確認してください。

于 2013-01-27T20:02:15.077 に答える