检测浏览器并阻止用户使用页面的正确方法?

Posted

技术标签:

【中文标题】检测浏览器并阻止用户使用页面的正确方法?【英文标题】:Right way to detect browser and stop user from using page? 【发布时间】:2014-07-24 16:10:14 【问题描述】:

好的,我想让用户只有在浏览器是 Chrome 或 IE8-9 时才能使用该页面。 如您所见,我是从后面的代码中这样做的。并且还试图将主 div 的可行性设置为无。

 protected void Page_Load(object sender, EventArgs e)
    
        System.Web.HttpBrowserCapabilities browser = Request.Browser;
        if (browser.Type.ToString().ToLower().StartsWith("ie"))
        
            if (Convert.ToDecimal(browser.Version) < 8 || Convert.ToDecimal(browser.Version) > 9)
            
                ScriptManager.RegisterStartupScript(this, this.GetType(), "pop", "<script>alert('Your browser is not supported. Please use Chrome or IE7,IE8,IE9');</script>", false);
                pagecontainer.Attributes["style"] = "visible:none";
                return;
            
        
        else if (!browser.Type.ToString().ToLower().StartsWith("chrome"))
        
            ScriptManager.RegisterStartupScript(this, this.GetType(), "pop", "<script>alert('Your browser is not supported. Please use Chrome or IE7,IE8,IE9');</script>", false);
            pagecontainer.Attributes["style"] = "visible:none";
            return;
        
//blah blah       



<div id="pagecontainer" runat="server" >Page Content Goes Here</div>

但它似乎并没有隐藏 div。 我知道我总是可以将用户重定向到警告页面或其他东西,但可以说我不想这样做。我的替代方案是什么?

【问题讨论】:

pagecontainer 变量在哪里定义? pagecontainer是div的id。 使用runat="server",您也可以使用pagecontainer.Visible = false; @Bharadwaj 虽然我不是金发女郎,但我正在度过一个金发碧眼的时刻。但是还有其他选择吗?仅供参考。顺便说一句,Scriptmanager 似乎没有出现在屏幕上。任何想法为什么? 您为什么要这样做?顺便说一句,你不能可靠地做到这一点,因为用户可以在任何浏览器中伪造他们的用户代理(用户代理字符串是你获取信息的地方,用户正在使用哪个浏览器) 【参考方案1】:

删除这一行:

pagecontainer.Attributes["style"] = "visible:none";

改用这个:

pagecontainer.Attributes.Add("style", "display:none;");

【讨论】:

以上是关于检测浏览器并阻止用户使用页面的正确方法?的主要内容,如果未能解决你的问题,请参考以下文章

检测用户何时离开网页的最佳方法?

阻止用户返回并查看以前提交的表单Rails

解决弹出的窗口window.open会被浏览器阻止的问题

使用浏览器后退按钮时如何强制重新加载页面?

检测浏览器自动填充

检测到浏览器没有鼠标且仅触摸