Control的C#WPF应用程序(.NET 4)可能会遇到AJAX调用差异。 这通常表现为未完成的持续的“您的请求正在处理”消息。>
WebBrowser
根本原因:
>解决方案:通过注册表操作的功能控制WebBrowser
>
代码示例:
此代码片段设置WebBrowser
注册表密钥以匹配检测到的IE版本。 它还演示了基于安装的IE版本检索适当的仿真模式的函数。 请记住添加
的必要语句。。
重要的考虑因素:FEATURE_BROWSER_EMULATION
using
Microsoft.Win32
System
错误处理:
<code class="language-csharp">private void SetBrowserFeatureControlKey(string feature, string appName, uint value) { using (var key = Registry.CurrentUser.CreateSubKey( $@"Software\Microsoft\Internet Explorer\Main\FeatureControl\{feature}", RegistryKeyPermissionCheck.ReadWriteSubTree)) { key.SetValue(appName, (uint)value, RegistryValueKind.DWord); } } private uint GetBrowserEmulationMode() { uint mode = 11000; // Default to IE11 emulation try { using (var ieKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer")) { var version = ieKey?.GetValue("svcVersion") ?? ieKey?.GetValue("Version"); if (version != null) { if (int.TryParse(version.ToString().Split('.')[0], out int browserVersion)) { switch (browserVersion) { case 7: mode = 7000; break; case 8: mode = 8000; break; case 9: mode = 9000; break; case 10: mode = 10000; break; } } } } } catch { /* Ignore registry access errors */ } return mode; } private void SetBrowserFeatureControl() { uint mode = GetBrowserEmulationMode(); SetBrowserFeatureControlKey("FEATURE_BROWSER_EMULATION", Application.ProductName, mode); } // Call SetBrowserFeatureControl() before initializing the WebBrowser control. For example: public MainWindow() { SetBrowserFeatureControl(); InitializeComponent(); }</code>
功能包括基本错误处理以优雅地管理潜在的注册表访问问题。 >
应用程序名称:GetBrowserEmulationMode
以上是为什么我的C#WebBrowser控件的AJAX调用与Internet Explorer不同,我该如何解决?的详细内容。更多信息请关注PHP中文网其他相关文章!