2012-05-01 192 views
7

WPF WebBrowser控件是否依賴於用戶計算機上安裝的IE版本,還是使用跨計算機保持一致的單獨庫?我讀過它只能在IE7模式下呈現,但我想確保沒有安裝IE的用戶或者出於某種原因仍然在IE6上的用戶沒有任何問題。WPF WebBrowser瀏覽器版本

回答

13

MSDN remarks for WebBrowser的指示它的主機切換IE ActiveX控件:

web瀏覽器控件內部實例化天然web瀏覽器ActiveX控件。

WebBrowser ActiveX控件更好地被稱爲Shdocvw.dll。這反過來包裝Mshtml.dll,並可能其他DLL給你的環境。 One caveat of rehosting this control is its setting for Browser Emulation

對於託管WebBrowser控件的應用程序,默認值爲7000。要通過使用註冊表來控制此功能的值,請將可執行文件的名稱添加到以下設置中,並將值設置爲與所需的設置相匹配。

0x7000表示IE7兼容模式。因此,如果你想你的WPF應用程序中使用一些其他的方式來呈現,你需要更新註冊表,爲adapted from this example

[HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword:2328 
+3

另一個有用的資源是[本文來自Rick Strahl,因爲他在使用他的Html Help Builder時遇到了這個問題](http://www.west-wind.com/weblog/posts/2011/May/21/網絡瀏覽器 - 控制 - 指定最IE-版)。 – user7116

+0

問題是,「WPF WebBrowser控件是否依賴於系統上安裝的IE版本?」這個答案只是討論瞭如何設置或覆蓋IE7仿真。如果用戶沒有在他們的機器上安裝IE或IE6,會發生什麼? – ThePersonWithoutC

0

我創建了一個WebBrowser控件一個WPF應用程序的機器上IE11,得到了該用戶代理字符串:

user agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3; .NET CLR 1.1.4322) 

我創建與IE10的機器上WebBrowser控件一個WPF應用程序,並得到了該用戶代理字符串:

user agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E) 

Trident/7.0表示IE11,Trident/6.0表示IE10。 More about user-agent strings

帶有IE10的系統也使頁面呈現與使用IE11的系統不同。我還在每個系統上使用獨立的IE瀏覽器進行了驗證。

我還沒有在沒有IE或系統運行IE6的系統上試用它,但似乎WebBrowser控件與當前安裝在系統上的IE版本有關。