簡體   English   中英

Web 瀏覽器組件是 IE7 不是 IE8? 如何改變這個?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM