我正在运行一个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";
}
但它仍会渲染整个页面并显示错误..如果在正确的浏览器中没有,我如何停止页面加载并显示错误?
答案 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();
注意:没有方法是绝对可靠的,服务器或客户端检测总是会被欺骗。