[c#] IE9 WebBrowser控件是否支持所有IE9的功能,包括SVG?



5 Answers

WebBrowser控件將使用您安裝的任何版本的IE,但出於兼容性的原因,默認情況下,它將在IE7標準模式下呈現頁面。

如果您想利用新的IE9功能,您應該在HTML頁面的<head>標記內添加元標記<meta http-equiv="X-UA-Compatible" content="IE=9" >

這個元標記必須添加在任何指向<head> CSS,JavaScript文件等的鏈接之前才能正常工作(只有其他<meta>標記或<title>標記可以放在它之前)。

另一種方法是將註冊表項添加到:

HKLM> SOFTWARE> Microsoft> Internet Explorer> Main> FeatureControl> FEATURE_BROWSER_EMULATION

然後在那裡添加值為'9000'的'myApplicationName.exe'強制WebBrowser控件在IE9模式下顯示頁面。 儘管還有http://msdn.microsoft.com/en-us/library/ee330730%28VS.85%29.aspx#browser_emulation ,但請注意,這些文檔並不完全準確,因為無論使用什麼值,都無法在IE 8模式下呈現頁面。

將註冊表項添加到HKCU中相同的路徑而不是HKLM也可以工作 - 這是很有用的,因為寫入HKLM需要管理員權限,而HKCU則不需要。

Question

我最近升級到IE9-beta。 現在,在我的.Net(3.5)WinForm應用程序中,我想使用WebBrowser控件。

所以我的問題是, WebBrowser控件是否會顯示IE9的所有屬性和功能?

我擔心的是,我想渲染一些SVG圖形。




是的,WebBrowser控件使用您安裝的任何版本的IE。 這意味著如果你在一台使用IE 8的機器上運行你的應用程序,那麼你所依賴的IE 9功能將不可用。




我喜歡下面的(C#)代碼,它為您的應用程序設置註冊表設置。 不知道是否會在安裝後切斷它,儘管如果需要權限。 對我來說,它解決了WebSocket在WPF的WebBrowser控件中不可用的問題。

C#webbrowser Ajax調用




關於64位Windows的注意事項,這似乎讓幾個人絆倒了。 如果您的應用程序在64位Windows下運行,則可能需要在[HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION]下設置DWORD。




關於白鷹的接受答案。 我只是想增加一點經驗。 只是試圖添加評論,但是由於抱怨太長了。

基本上,如果沒有安裝IE 9,註冊表開關FEATURE_BROWSER_EMULATION將無法正常工作。

例如,我今天的經歷是試圖讓.net webcontrol與IE10模式一起工作,因為我試圖渲染的一個html在VS2012下無法使用.netControl,甚至在我將HTML加載到IE8時也不工作直接,仍然CSS將無法正確呈現(即使我說允許阻止的內容)。 但我已經在朋友的win 8機器上測試了與IE10相同的html。 這就是為什麼我試圖將.net webControl設置為IE 10模式,但只是保持失敗......

現在我想這是bcos我的win 7機器只安裝了IE8,所以無論我將哪個值設置到FEATURE_BROWSER_EMULATION開關(值為IE9,IE10 IE11),它都無法工作!

然後我在我的win 7機器上下載並安裝了IE 10。 它仍然不起作用,然後我添加了FEATURE_BROWSER_EMULATION,它開始工作!

另外我注意到無論我設置了哪個值,甚至默認將其設置為0,webControl仍然使用仍然適用於我的IE 10模式。

所以總結一下,如果你安裝了IE X,但你希望你的.Net webControl在IE(X + N)N> 0 modo下工作,你需要做兩件事

  1. 轉到MS網站並下載並在您的計算機上安裝IE(X + N),安裝後需要重新啟動。

  2. 應用白鷹的答案。

基本上:要通過使用註冊表來控制此功能的值,請將可執行文件的名稱添加到以下設置,並將值設置為與所需的設置相匹配。

HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
   SOFTWARE
      Microsoft
         Internet Explorer
            Main
               FeatureControl
                  FEATURE_BROWSER_EMULATION
                     contoso.exe = (DWORD) 00009000

Windows Internet Explorer 8和更高版本。 FEATURE_BROWSER_EMULATION功能定義Internet Explorer的默認模擬模式並支持以下值。

價值描述

  • 11001(0x2AF9 Internet Explorer 11.網頁以IE11邊緣模式顯示,無論!DOCTYPE指令如何。

    11000(0x2AF8)IE11。 包含基於標準!DOCTYPE指令的網頁以IE11邊緣模式顯示。 IE11的默認值。

    10001(0x2711)Internet Explorer 10.網頁以IE10標準模式顯示,無論!DOCTYPE指令如何。

    10000(0x02710)Internet Explorer 10.包含基於標準!DOCTYPE指令的網頁在IE10標準模式下顯示。 Internet Explorer 10的默認值。

    9999(0x270F)Windows Internet Explorer 9.網頁以IE9標準模式顯示,無論!DOCTYPE指令如何。

    9000(0x2328)Internet Explorer 9.包含基於標準的!DOCTYPE指令的網頁以IE9模式顯示。 Internet Explorer 9的默認值。

    重要在Internet Explorer 10中,包含基於標準!DOCTYPE指令的網頁在IE10標準模式下顯示。

    8888(0x22B8)不管!DOCTYPE指令如何,網頁都以IE8標準模式顯示。

    8000(0x1F40)包含基於標準的!DOCTYPE指令的網頁以IE8模式顯示。 Internet Explorer 8的默認值重要在Internet Explorer 10中,包含基於標準!DOCTYPE指令的網頁在IE10標準模式下顯示。

    7000(0x1B58)包含基於標準的!DOCTYPE指令的網頁以IE7標準模式顯示。 託管WebBrowser控件的應用程序的默認值。

充分參考here




我知道這個線程很老,而且已經有了全面的答案。

以防萬一你不知道這一點:

<meta http-equiv="X-UA-Compatible" content="IE=edge" >

您不必將IE版本號硬編碼為

<meta http-equiv="X-UA-Compatible" content="IE=9" >




Related