停止某些浏览器的页面加载

时间:2012-12-19 18:50:50

标签: asp.net

我正在运行一个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";
    }

但它仍会渲染整个页面并显示错误..如果在正确的浏览器中没有,我如何停止页面加载并显示错误?

2 个答案:

答案 0 :(得分:2)

停止加载页面不是正常行为。您最好的选择是重定向或逻辑分支您的代码(假设它是javascript),以便它不会在特定的浏览器上运行。可能会根据浏览器支持隐藏/显示div。

甚至比检测浏览器更好,检测您需要的某些功能的存在。看看现代化的。

答案 1 :(得分: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();

注意:没有方法是绝对可靠的,服务器或客户端检测总是会被欺骗。