以前在 「ie8相容檢視(ie7 mode)與獨立ie7的區別」一文中曾經涉及過瀏覽器模式和文件模式,但二者的區別卻不甚了了,現在有了新的認識,再補充一下。在較新的ie瀏覽器中(如ie8, ie9, ie10),為了解決相容性的問題,引入了瀏覽器模式和文件模式兩個概念,瀏覽網頁時可以通過按f12鍵看到這兩種模式。
瀏覽器模式的主要作用是為相容較早版本的ie,它會控制瀏覽器發出的useragent,表示以哪個版本的瀏覽器發出請求,以此來允許為某個特定ie版本設計的**正確執行(舉例來說:有些**真是判斷ie版本的,還有css裡也有判斷ie版本的)。
文件模式的主要作用是影響瀏覽器顯示網頁html的方式,在接到返回的html檔案後,決定以哪個ie版本的文件模式解析該頁面(舉例來說:js指令碼就是依賴文件模式,ie9的js變化就需要ie9文件模式來支援)
。在安裝了ie9的計算機上,webbrowser並不是直接執行在ie9模式下,而是預設工作在ie9相容檢視(也就是ie7 mode)下,為了讓webbrowser工作在ie9下,需要修改登錄檔,為應用程式指明使用ie9版本。
32位計算機需要修改登錄檔
hkey_local_machine\software\microsoft\internet explorer\main\featurecontrol\feature_browser_emulation
64位計算機需要修改登錄檔
如果htm頁面中沒有doctype,那麼webbrowser將不會使用ie9文件模式來解析頁面(哪怕已經設定了登錄檔9999),而是仍沿用之前相容舊版ie的 quirks模來渲染,解釋頁面,js指令碼也將同樣處置。這樣的缺點是無法使用html5新特性,優點是您的系統公升級到ie9的相容性改造工作將會大為減少。
修改htm頁面的方法之一是,在head->title下新增
,這樣可確保htm頁面工作在ie9標準文件模式下。
注意:msdn上寫的關於9999可以無視doctype而自動使頁面執行在ie9文件模式的說法是錯誤的,這一點已經得到了權威的認可。
欲使你的
系統作為整體(包括
webbrowser
和htm頁面)工作在
ie9下,則以上
2, 3
兩步均需遵守,缺一不可。
*******************
後記. 發現3確實不可或缺,但2卻不必了,因為3的優先順序比2高,基本上,有了3就可以了。
IE的瀏覽器模式和文件模式
從ie8瀏覽器開始,微軟向 web 標準進行靠攏,以便讓各種瀏覽器可以更好的相容 中使用的 開發人員不用花太多精力使用不同的方法在各種的瀏覽器上實現自己需要的效果,使用者也可以更自由的選擇使用自己喜歡的瀏覽器。之前的ie6和ie7為了實現更多的功能,其 規範與 w3c 的標準有許多出入,由於ie的市...
IE 「瀏覽器模式」和「文件模式」的區別
從ie8瀏覽器開始,微軟向 web 標準進行靠攏,以便讓各種瀏覽器可以更好的相容 中使用的 開發人員不用花太多精力使用不同的方法在各種的瀏覽器上實現自己需要的效果,使用者也可以更自由的選擇使用自己喜歡的瀏覽器。之前的ie6和ie7為了實現更多的功能,其 規範與 w3c 的標準有許多出入,由於ie的市...
IE 「瀏覽器模式」和「文件模式」的區別
摘自 從ie8瀏覽器開始,微軟向 web 標準進行靠攏,以便讓各種瀏覽器可以更好的相容 中使用的 開發人員不用花太多精力使用不同的方法在各種的瀏覽器上實現自己需要的效果,使用者也可以更自由的選擇使用自己喜歡的瀏覽器。之前的 ie6和 ie7為了實現更多的功能,其 規範與 w3c 的標準有許多出入,由...