1.瀏覽器模式與文檔模式概念
在較新的IE瀏覽器中(如IE8, IE9, IE10),為了解決兼容性的問題,引入了瀏覽器模式和文檔模式兩個概念,瀏覽網頁時可以通過按F12鍵看到這兩種模式。
瀏覽器模式的主要作用是為兼容較早版本的IE,它會控制瀏覽器發出的UserAgent,表示以哪個版本的瀏覽器發出請求,以此來允許為某個特定IE版本設計的代碼正確執行(舉例來說:有些代碼真是判斷ie版本的,還有css里也有判斷ie版本的)。
文檔模式的主要作用是影響瀏覽器顯示網頁HTML的方式,在接到返回的HTML文件后,決定以哪個IE版本的文檔模式解析該頁面(舉例來說:JS腳本就是依賴文檔模式,IE9的js變化就需要IE9文檔模式來支持)。
2.如何使WebBrowser運行在IE9瀏覽器模式下
在安裝了IE9的計算機上,Webbrowser並不是直接運行在IE9模式下,而是默認工作在IE9兼容視圖(也就是IE7 Mode)下,為了讓Webbrowser工作在IE9下,需要修改注冊表,為應用程序指明使用IE9版本。
32位計算機需要修改注冊表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION,增加YourApplication.exe,值為十進制9999。
64位計算機需要修改注冊表HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION,增加YourApplication.exe,值為十進制9999。
注意:9999最正確,9000則不推薦用,因為它不徹底。
3.如何使Htm頁面使用IE9文檔模式
如果htm頁面中沒有doctype,那么WebBrowser將不會使用IE9文檔模式來解析頁面(哪怕已經設置了注冊表9999),而是仍沿用之前兼容舊版IE的 Quirks模來渲染,解釋頁面,JS腳本也將同樣處置。這樣的缺點是無法使用Html5新特性,優點是您的系統升級到IE9的兼容性改造工作將會大為減少。
修改Htm頁面的方法之一是,在Head->Title下添加<META http-equiv="X-UA-Compatible" content="IE=9" > </META>,這樣可確保HTM頁面工作在IE9標准文檔模式下。
注意:msdn上寫的關於9999可以無視doctype而自動使頁面運行在ie9文檔模式的說法是錯誤的,這一點已經得到了權威的認可。
4.總結
欲使你的系統作為整體(包括WebBrowser和Htm頁面)工作在IE9下,則以上2, 3兩步均需遵守,缺一不可。
*******************
后記. 發現3確實不可或缺,但2卻不必了,因為3的優先級比2高,基本上,有了3就可以了。