Windows瀏覽器控制項相容性設定 以及核心選擇

2021-06-19 19:00:34 字數 1240 閱讀 2157

ie8 瀏覽器存在兩種模式,一種是相容模式,一種是標準模式。所謂的相容模式是為了相容之前的網頁。(微軟以前不靠譜,非不按照規矩來辦事。現在浪子回頭了,只好搞個相容模式來解決。)

在開發專案的時候,用到了瀏覽器控制項,頁面在相容模式下有問題,標準模式下沒有問題。為了絕對不能出問題,我就需要在程式中強行設定瀏覽器控制項開啟網頁頁面時用標準模式。webbrowser控制項的渲染模式可以通過設定登錄檔feature_browser_emulation 來實現。

ie8 standards mode   8000 (0x1f40)  -- ie8 標準模式 (standard mode), ie8預設的模式

ie8 standards mode (forced)  8888 (0x22b8) -- ie8 強制標準模式,在渲染失敗的情況下不嘗試用相容檢視模式

ie7 standards mode   7000 (0x1b58)  -- ie7 相容檢視模式 (compatible view), ie8的webbrowser控制項預設模式

例子**:

以下**設定瀏覽器控制項需要的瀏覽器版本號並且強制使用標準模式。

char* old_locale = _strdup( setlocale(lc_all,null) );    

setlocale( lc_all, "chs" );

dword dword = 8888;

wchar buffer[max_path] = ;

getmodulefilename(getmodulehandle(0), buffer, max_path);

cstring strexename = pathfindfilename(buffer);

hresult hr = ::shsetvalue(hkey_current_user,l"software\\microsoft\\internet explorer\\main\\featurecontrol\\feature_browser_emulation",strexename,reg_dword,&dword,sizeof(dword));

hr = ::shsetvalue(hkey_local_machine,l"software\\microsoft\\internet explorer\\main\\featurecontrol\\feature_browser_emulation",strexename,reg_dword,&dword,sizeof(dword));

部分內容參考: 

瀏覽器相容性

瀏覽器相容性是乙個很長久的話題,之所以前端需要面對瀏覽器相容性,是因為使用者的環境有不同的平台,不同的瀏覽器。不同的廠商之間為了相互競爭,對標準的實現不一樣。不同的瀏覽器有不同的核心。即使同乙個瀏覽器也有不同的版本,不同的版本對同一特性的支援情況也不盡相同。也可能某個瀏覽器的某個版本針對某個特性存在...

瀏覽器相容性

所謂的瀏覽器相容性問題,是指因為不同的瀏覽器對同一段 有不同的解析,造成頁面顯示效果不統一的情況。在大多數情況下,我們的需求是,無論使用者用什麼瀏覽器來檢視我們的 或者登陸我們的系統,都應該是統一的顯示效果。所以瀏覽器的相容性問題是前端開發人員經常會碰到和必須要解決的問題。在學習瀏覽器相容性之前,我...

瀏覽器相容性

trident ie核心 gecko firefox 核心 webkit chrome,safari blink webkit 的分支 presto 是挪威產瀏覽器 opera 的 前任 核心,為何說是 前任 因為最新的 opera 瀏覽器早已將之拋棄從而投入到了谷歌大本營。移動端的瀏覽器核心主要說...