做了一個Winform的項目。項目里使用了WebBrowser控制項。以前一直都以為WebBrowser是直接調用的系統自帶的IE,IE是呈現出什麼樣的頁面WebBrowser就呈現出什麼樣的頁面。其實並非如此。我的Winform程式載入了一個Web項目。這個項目對IE8一下的瀏覽器佈局相容不是太好。 ...
做了一個Winform的項目。項目里使用了WebBrowser控制項。以前一直都以為WebBrowser是直接調用的系統自帶的IE,IE是呈現出什麼樣的頁面WebBrowser就呈現出什麼樣的頁面。其實並非如此。我的Winform程式載入了一個Web項目。這個項目對IE8一下的瀏覽器佈局相容不是太好。本機使用的是IE8,項目是.net4.0。用本機瀏覽器查看Web項目沒有任何問題。可是調用Winform里的WebBrowser瀏覽Web項目頁面卻出現了佈局問題。所以我就開始質疑到底WebBrowser是不是IE8的模式啊。於是打開IETester,從IE9一直到IE5都查看了一遍,發現最像WebBrowser佈局呈現的是IE7模式下。在搜了一些相關資料原來WebBrowser使用的是IE的相容模式進行瀏覽(IE7模式)。
如何讓WebBrowser引用IE 8 呢。可以通過註冊表的新增鍵值實現
打開HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
在其中新增一個DWORD值。鍵值名稱寫入你的程式名,然後在數值數據填入1f40。也就是IE8
填寫完畢後。到程式目錄下打開就可以看到WebBrowser已經引用IE8模式了,這裡要主意的是不要在VS打開。
下麵是32位 64位系統需要修改的註冊表地址 以及IE各版本的值
32 bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
Value Key: yourapplication.exe
64 bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
Value Key: yourapplication.exe
The value to set this key to is (taken from MSDN here) as decimal values:
9999 (0x270F)
Internet Explorer 9. Webpages are displayed in IE9 Standards mode, regardless of the !DOCTYPE directive.
9000 (0x2328)
Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.
8888 (0x22B8)
Webpages are displayed in IE8 Standards mode, regardless of the !DOCTYPE directive.
8000 (0x1F40)
Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode.
7000 (0x1B58)
Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode.