【问题标题】: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 似乎没有出现在屏幕上。任何想法为什么?
  • 您为什么要这样做?顺便说一句,你不能可靠地做到这一点,因为用户可以在任何浏览器中伪造他们的用户代理(用户代理字符串是你获取信息的地方,用户正在使用哪个浏览器)

标签: c# javascript jquery css asp.net


【解决方案1】:

删除这一行:

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

改用这个:

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

【讨论】:

    猜你喜欢
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 2021-09-14
    • 2014-10-12
    • 2011-02-09
    相关资源
    最近更新 更多