[英]Web Browser component is IE7 not IE8? How to change this?
所以我有一個使用 Web 瀏覽器組件的 C# 表單應用程序。 顯然 Response.Write(Request.Browser.Version.ToString()); 當我從 Web 瀏覽器組件訪問我的測試頁面時返回“7.0”。
我怎樣才能讓這個 Web 瀏覽器組件使用 IE8?
看來您需要按照本文修改注冊表:-
http://blogs.msdn.com/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx
要在 IE8 標准模式下運行 WebBrowser 控件,請在注冊表中使用以下新值:
[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"MyApplication.exe" = dword 8000 (Hex: 0x1F40)
要在 IE7 標准模式下運行,請使用以下注冊表值:
[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"MyApplication.exe" = dword 7000 (Hex: 0x1B58)
對於 IE8 RTM,我們添加了一個新的“強制”IE8 標准模式值。 當應用程序選擇此模式時,Web 瀏覽器控件將嚴格使用 IE8 用戶代理字符串和瀏覽器仿真模式。 它還會在加載頁面時忽略回退功能,例如內置的兼容性視圖列表和用戶生成的兼容性視圖列表。 要在“強制”IE8 標准模式下運行,請使用以下注冊表值:
[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"MyApplication.exe" = dword 8888 (Hex: 0x22B8)
在所有這些示例中,“MyApplication.exe”是指您的應用程序的名稱。
答案可能會遲到並且可能不適用於您的情況,但根據 Ron 對問題WPF .net4 webBrowser 和 Internet Explorer 8的回答,如果您可以控制所提供的頁面,您還可以控制網絡瀏覽器:
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
雖然這顯然不會改變用戶代理,但似乎條件像
<!--[if lt IE 8]>
和 CSS border-radius
正在被正確評估,這表明盡管用戶代理報告了 MSIE 7.0,但實際上正在使用最新的引擎(我系統上的 IE 9)。
我確實遵循了這個,直到我意識到這是因為我在 Visual Studio 中調試它才起作用。
除了為您的應用程序設置注冊表之外:
Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION",
System.AppDomain.CurrentDomain.FriendlyName, value);
您還應該為您的調試(visual studio 托管)應用程序設置它:
Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION",
System.AppDomain.CurrentDomain.FriendlyName.Replace(".exe",".vshost.exe"), value);
您也應該在調試時更改系統的注冊表。
public void ChangeRegistery()
{
string key = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION";
var value = 0x22B8;
Microsoft.Win32.Registry.SetValue(key, System.AppDomain.CurrentDomain.FriendlyName, value,Microsoft.Win32.RegistryValueKind.DWord);
#if DEBUG
Microsoft.Win32.Registry.SetValue(key, System.AppDomain.CurrentDomain.FriendlyName.Replace(".exe", ".vshost.exe"), value, Microsoft.Win32.RegistryValueKind.DWord);
#endif
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.