0

MVC4 プロジェクトがあり、Modernizr に問題があります。HTML入力タイプの日付がサポートされているかどうかをテストしたい。そうでない場合は、kendoUI (jquery-UI に類似) をロードして、datepicker コントロールとして日付の入力タイプを使用したすべてのインスタンスを表示します。以下のスクリプトを使用して、日付の入力タイプがサポートされていない場合にのみ、剣道の css および js ファイルをロードしています。

<script>
    Modernizr.load({
        test: Modernizr.inputtypes.date,
        nope: ['/Content/Kendo-styles/kendo.common.min.css',
            '/Content/Kendo-styles/kendo.default.min.css',
            '/Scripts/kendo/kendo.web.min.js'],
        complete: function () {
            $('input[type=date]').kendoDatePicker({
                format: "dd/MM/yyyy"
            });
        }
    });
</script>

これを自分のページのスクリプト セクションに配置しました (_Layout/master ではなく、次のレベル)。動作しますが、ちらつきます。スクリプトをロードしてから、完全な機能を実行する前にページを表示するように見えるため、最初にテキストボックスが表示され、次に約が表示されます。0.5 秒後、日付ピッカーがその場所にレンダリングされます。

完全な関数を削除して、次のスクリプトをドキュメント準備完了関数に追加すると、失敗することがあります。この場合、剣道スクリプトがダウンロードされたがまだ実行されていないため、kendodatepicker が認識されていないことが (ブラウザー開発者ツール - ネットワークで) わかります。この場合、Modernizer が完了する前にドキュメントの準備が完了していると推測することしかできません。私はこれが正しいですか?以下は私のドキュメント対応コードです。

$(function () {    
    if (!Modernizr.inputtypes.date) {
        $('input[type=date]').kendoDatePicker({
            format: "dd/MM/yyyy",
        });            
    }
}

誰かがこれに対する解決策を知っていますか、それとも私は愚かなことをしています..

4

1 に答える 1

0

0.5 秒は、3 つのファイルをダウンロードして関数を実行する必要があるためです。

私は CSS を事前にロードすることを支持しています (軽量です)。mvc4 を使用しているため、バンドルに追加することができ、実稼働環境で追加の要求が追加されることはありません。

そのほうが早くなる

于 2012-07-11T15:02:07.400 に答える