0

asp.net mvc3 Web サイトを実行しています。実行中の IE のバージョンを確認したいのですが、ブラウザが ie9 でない場合は、ページを停止してエラー メッセージを表示する必要があります。

これを行う簡単な方法はありますか?

私はこれを試しました

  var ie = (function(){

        var undef,
            v = 3,
            div = document.createElement('div'),
            all = div.getElementsByTagName('i');

        while (
            div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
            all[0]
        );

        return v > 4 ? v : undef;

    }());

    if (ie < 9) {
        console.log('ie');
        document.write('<div class="page-error">' + 'bad' + '</div>');

        /*Must throw and not catch this exception in order for the page to stop loading further.*/
        throw "Invalid page exception";
    }

しかし、それでもページ全体がレンダリングされ、エラーが表示されます.正しいブラウザーでエラーが発生しない場合、ページの読み込みを停止してエラーを表示するにはどうすればよいですか?

4

2 に答える 2

2

ページの読み込みを停止することは、通常の動作ではありません。あなたの最善の策は、特定のブラウザーで実行されないように、リダイレクトを行うか、コードを論理的に分岐することです (それが javascript であると仮定します)。ブラウザのサポートに基づいて div を非表示/表示する可能性があります。

ブラウザを検出するよりもさらに優れているのは、必要な特定の機能の存在を検出することです。これについては、modernizr をご覧ください。

于 2012-12-19T18:56:41.930 に答える
0

これは完全にサーバー側で行うことができ、ユーザーをエラー ページにリダイレクトするだけです。何かのようなもの:

protected void Page_Load(object sender, EventArgs e)
{

    if(!Request.Headers["User-Agent"].Contains("MSIE 9.0"))
    {
        Response.Redirect("Error.aspx");
    }
}

を実行したくない場合はResponse.Redirect、次のように Response に直接書き込みます。

Response.Write("<div> Error - go get IE9 </div>";
Response.End();

注: 絶対確実な方法はありません。サーバー側またはクライアント側の検出は常にだまされる可能性があります。

于 2012-12-19T19:04:00.390 に答える