標籤:blog http 使用 os io strong for ar
強制IE瀏覽器或WebBrowser控制項使用指定版本顯示網頁
自從裝了IE10之後,就發現好些個網站顯示都不是那麼的正常,網站上有些功能竟然還會出現一些意想不到的BUG——本來就是針對IE開發的,現在IE下竟然用不起來了,讓使用者情何以堪?但是就為少量使用者使用的系統去大動幹戈的調整功能,這實在是讓人頭疼!在經過一番折騰之後,竟然找到一個非常M$的方法來解決 —— 強制高版本的IE瀏覽器用低地版本模式顯示網頁。
就是直接讓IE10預設以指定的IE版本的瀏覽器模式來運行,並用這個指定的版本來進行解析頁面,在上一篇定義文檔相容性的文章中,我們已經其實知道了瀏覽器模式和文檔模式的區別,並且我們通過修改X-UA-Compatible來修改了瀏覽器的文檔模式。這個方法本來能夠解決我們當下的問題,但實際上,我們不想讓整個網站用IE8或者IE7來解析,我們僅是想針對少數的幾個人在核心的功能上使用IE8來處理。當然,我們還是能夠使用頁面上添加meta元素的 —— 但在這裡,我們尋求到另外的一個解決方案:由於使用核心功能的人群可控,並且數量少。因此直接控制IE,讓高版本的瀏覽器(版本>=8)按照指定的低版本模式進行解析。方法是直接調整登錄機碼:
code
| 12345 |
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION 或者 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION |
在FEATURE_BROWSER_EMULATION這個登錄機碼下添加一個DWORD的值,名稱為:iexplore.exe值為十進位的8888或者8000。儲存後,重新開啟IE瀏覽器(IE8或更高),你就會發現,瀏覽器此時使用的是IE8模式在進行瀏覽。
這個方法本來是用在解決那些使用了IE WebBrowser 控制項的應用程式在需要特定的瀏覽器版本支援下的。既然如此,那麼讓我們更進一步的瞭解下,在我們的程式中如果使用了IE WebBrowser之後,應該如何指定瀏覽器版本。其實,如果有心,你可以開啟上面兩個登錄機碼的任意一個,說不定就能看到上面已經有一些值了,這些都是已經指定特定瀏覽器版本的程式。 比如我這裡就有下面這些:
devenv.exe是VS2010的應用程式,在這裡我們可以看到,M$強制要求devenv.exe中使用的瀏覽器版本為IE9。既然他都這麼用,自然而然,我們也應該能從中找到解決問題的方法了。如果你在應用程式:SomeApplication.exe中使用了IE WebBrowser的控制項,那麼你如果想在SomeApplication.exe這個程式中的WebBrowser控制項以某一個指定的版本的瀏覽器進行解析頁面,你就可以在上述的那個登錄機碼中加入你的程式了。比如你要指定為IE8運行,那麼你只要建立一個DWORD值,名稱為SomeApplication.exe,值為:8888即可。
到此我們已經會為瀏覽器和WebBrowser控制項指定特定的瀏覽器運行版本了,但可能你會發現,後面的數值有那麼一些不好理解,那我要使用IE怎麼辦?同樣IE8怎麼會有8000和8888這樣的數值呢,個表示什嗎?如果你也有疑問,那麼請看下錶吧,羅列出了常用的數值對照說明表:
| 值 |
說明 |
| 10001 (0x2711) |
Internet Explorer 10。網頁以IE 10的標準模式展現,頁面!DOCTYPE無效 |
| 10000 (0x02710) |
Internet Explorer 10。在IE 10標準模式中按照網頁上!DOCTYPE指令來顯示網頁。Internet Explorer 10 預設值。 |
| 9999 (0x270F) |
Windows Internet Explorer 9. 強制IE9顯示,忽略!DOCTYPE指令 |
| 9000 (0x2328) |
Internet Explorer 9. Internet Explorer 9預設值,在IE9標準模式中按照網頁上!DOCTYPE指令來顯示網頁。 |
| 8888 (0x22B8) |
Internet Explorer 8,強制IE8標準模式顯示,忽略!DOCTYPE指令 |
| 8000 (0x1F40) |
Internet Explorer 8預設設定,在IE8標準模式中按照網頁上!DOCTYPE指令展示網頁 |
| 7000 (0x1B58) |
使用WebBrowser Control控制項的應用程式所使用的預設值,在IE7標準模式中按照網頁上!DOCTYPE指令來展示網頁。 |
FEATURE_BROWSER_EMULATION設定說明
註:
1. 准模式指的是瀏覽器模式,而!DOCTYPE控制的是文檔模式。
2. 應用程式中包含的WebBrowser Control控制項時,預設WebBrowser使用的是IE7,這是個很重要的知識點。
好了,到此應該對於IE運行於指定版本的方法已經介紹完畢,同時自己程式中如何設定的方法也有了明確方向,接下來的事情就是——用起來吧。
參考文檔:Internet Feature Controls (B..C)
轉自:http://blog.useasp.net/archive/2013/05/30/force-ie8-or-higher-or-webBrowser-control-use-specific-version-to-display-pages.aspx