2010-02-08 236 views
37

我需要从别人浏览器检测

分开IE和FF浏览器它是一个伪代码:

If (CurrentBrowser == IE(6+) or FF(2+)) 
{ 
... 
} 
else 
{ 
... 
} 

protected void Page_Load()事件(是这么认为的)

if ((Request.Browser.Type == "IE") || (Request.Browser.Type == "FF")) 
{ 
    WebMsgBox.Show("1111"); 
} 

没有影响: - /什么是IE和FF类型?

+7

**不要浏览器嗅探**,特别是不要在服务器端浏览器嗅探。除非包含正确的'Vary:User-Agent'头文件,否则您正在使用代理缓存破坏自己,在这种情况下,您正在使用IE进行缓存。找到客户端做你在做什么的方式(例如,IE的条件注释),并且倾向于嗅探功能而不是仅仅不可靠的用户代理名称。这种嗅探方法试图解决什么问题? – bobince 2010-02-08 13:46:44

+0

我有一个只用于FF和IE引擎的jQuery脚本 – Cynede 2010-02-09 05:37:13

回答

62
if (Request.Browser.Type.Contains("Firefox")) // replace with your check 
{ 
    ... 
} 
else if (Request.Browser.Type.ToUpper().Contains("IE")) // replace with your check 
{ 
    if (Request.Browser.MajorVersion < 7) 
    { 
     DoSomething(); 
    } 
    ... 
} 
else { } 
+0

有没有这样的参数“名称”和... IE和FF是Internet Explorer和火狐...我不认为这是FF:-S – Cynede 2010-02-08 13:34:32

+0

感谢队友纠正,我已经修复,现在测试它。 – 2010-02-08 17:24:59

+1

不适用于mozilla ...尝试过“Mozilla”而不是“FF”,但那也没有帮助我。 – Cynede 2010-02-09 05:36:00

1

我不会建议用JS手动攻击浏览器特定的东西。可以使用像“prototype”或“jquery”这样的JavaScript库,它将透明地处理所有特定的问题。

或者如果您确实需要使用这些库来确定浏览器类型。

也看到

Request.Browser 

Browser & version in prototype library?

+0

为什么要黑客......?我刚刚获得FF引擎和IE引擎的J代码,并且必须为其他浏览器制作其他内容。 – Cynede 2010-02-08 13:24:32

+0

也不是所有你可能需要检测浏览器将通过使用jquery/prototype来“固定”...例如,我有一个预览存储库中的文件的网站。 MSIE是唯一支持预览XPS文件的浏览器 - 这不是jQuery或原型可以修复的问题。 – 2012-06-30 00:07:23

16

这里是正在使用的方式,你可以请求有关浏览器的信息,您可以用它来做你的陈述

System.Web.HttpBrowserCapabilities browser = Request.Browser; 
    string s = "Browser Capabilities\n" 
     + "Type = "     + browser.Type + "\n" 
     + "Name = "     + browser.Browser + "\n" 
     + "Version = "     + browser.Version + "\n" 
     + "Major Version = "   + browser.MajorVersion + "\n" 
     + "Minor Version = "   + browser.MinorVersion + "\n" 
     + "Platform = "    + browser.Platform + "\n" 
     + "Is Beta = "     + browser.Beta + "\n" 
     + "Is Crawler = "    + browser.Crawler + "\n" 
     + "Is AOL = "     + browser.AOL + "\n" 
     + "Is Win16 = "    + browser.Win16 + "\n" 
     + "Is Win32 = "    + browser.Win32 + "\n" 
     + "Supports Frames = "   + browser.Frames + "\n" 
     + "Supports Tables = "   + browser.Tables + "\n" 
     + "Supports Cookies = "  + browser.Cookies + "\n" 
     + "Supports VBScript = "  + browser.VBScript + "\n" 
     + "Supports JavaScript = "  + 
      browser.EcmaScriptVersion.ToString() + "\n" 
     + "Supports Java Applets = " + browser.JavaApplets + "\n" 
     + "Supports ActiveX Controls = " + browser.ActiveXControls 
       + "\n"; 

MSDN Article

+2

Tony-The-Lion:我没有侮辱你,只是陈述事实,这里是证明。该代码不会告诉您是运行Firefox还是Chrome。这只对IE有用。以上从代码输出为:\ n \ n IE 9: 类型= IE9 浏览器= IE FIREFOX 17: 类型= Mozilla17 浏览器= Mozilla的 CHROME 23: 类型=桌面 浏览器= AppleMAC,Safari浏览器。 为自己运行该代码并查看它将输出的内容。 我无法粘贴整个输出,因为此编辑字段只允许有限数量的字符。 – woohoo 2012-11-29 16:49:15

2
private void BindDataBInfo() 
    { 
     System.Web.HttpBrowserCapabilities browser = Request.Browser; 
     Literal1.Text = "<table border=\"1\" cellspacing=\"3\" cellpadding=\"2\">"; 
     foreach (string key in browser.Capabilities.Keys) 
     { 
      Literal1.Text += "<tr><td>" + key + "</td><td>" + browser[key] + "</tr>"; 
     } 
     Literal1.Text += "</table>"; 
     browser = null; 
    } 
0

试试下面的代码

HttpRequest req = System.Web.HttpContext.Current.Request 
string browserName = req.Browser.Browser;