2010-02-08 235 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;