0

我正在运行一个 asp.net mvc3 网站。我想检查正在运行的 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.Write("<div> Error - go get IE9 </div>";
Response.End();

注意:没有任何方法是万无一失的,服务器或客户端检测总是会被欺骗。

于 2012-12-19T19:04:00.390 回答