揭示 Web 浏览器控件模拟 (FEATURE_BROWSER_EMULATION) 背后的问题
在 C# Web 浏览器控件应用程序中导航到特定网页可能无法实现看起来很简单,特别是在注册表中不同的 FEATURE_BROWSER_EMULATION 设置的情况下。 Guy 提出了一个有趣的查询,探讨了使用此功能模拟浏览器版本时遇到的常见问题背后的根本原因。
背景:
Guy 使用 Visual Studio 创建了一个简单的应用程序2013,利用 Web 浏览器控件访问 Dojo Toolkit 网站上的页面。当注册表中未设置 FEATURE_BROWSER_EMULATION 时,站点将按预期运行。但是,设置与 IE9 仿真及以上版本相对应的值会导致故障。
调查问题:
问题在于 FEATURE_BROWSER_EMULATION 设置与页面行为之间的相互作用。当 Guy 的应用程序模拟 IE9 以下的 IE 版本时,页面可以正常运行,这表明与旧版浏览器标准兼容。但是,使用 IE9 及更高版本的值会导致冲突,导致月份日期选择器无法工作。
解决方案:
解决方案涉及关键的注册表设置调整:禁用 FEATURE_NINPUT_LEGACY_MODE。此功能会影响 Internet Explorer 中处理非客户端输入的方式,并可能干扰某些页面元素,包括日期选择器。
修订的实现:
修订的实现Guy 的应用程序通过禁用 FEATURE_NINPUT_LEGACY_MODE 解决了该问题:
Registry.SetValue(featureControlRegKey + "FEATURE_NINPUT_LEGACYMODE", appName, 0, RegistryValueKind.DWord);
结论:
事实证明,切换 FEATURE_NINPUT_LEGACY_MODE 设置有助于解决 Guy 应用程序的问题。禁用此功能可以增强 Web 浏览器控件与现代页面的兼容性,并消除因 FEATURE_BROWSER_EMULATION 值不同而导致的渲染问题。
以上是为什么禁用“FEATURE_NINPUT_LEGACY_MODE”可以修复 Web 浏览器控制模拟问题?的详细内容。更多信息请关注PHP中文网其他相关文章!