FEATURE_BROWSER_EMULATION による Web ブラウザ コントロール エミュレーションの問題
問題の説明:
Web 使用時Visual Studio 2013 のブラウザー コントロールで、アプリケーションの FEATURE_BROWSER_EMULATION レジストリ キーを IE10 または IE11 エミュレーション値に設定すると、コントロールが誤動作します。具体的には、Dojo Toolkit デモ ページ (http://demos.dojotoolkit.org/demos/calendar/demo.html) の月の日付ピッカーが正しく動作しません。
解決策:
問題は FEATURE_NINPUT_LEGACY_MODE レジストリ設定にあります。この設定を無効にし、レジストリ構成を通じて他の機能を有効にすると、問題が解決します。修正されたソリューションは次のとおりです。
const int POLL_DELAY = 250; WebBrowser _webBrowser; // set WebBrowser features, more info: http://stackoverflow.com/a/18333982/1768303 static void SetWebBrowserFeatures() { // don't change the registry if running in-proc inside Visual Studio if (LicenseManager.UsageMode != LicenseUsageMode.Runtime) return; var appName = System.IO.Path.GetFileName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName); var featureControlRegKey = @"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\"; Registry.SetValue(featureControlRegKey + "FEATURE_BROWSER_EMULATION", appName, GetBrowserEmulationMode(), RegistryValueKind.DWord); // enable the features which are "On" for the full Internet Explorer browser Registry.SetValue(featureControlRegKey + "FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION", appName, 1, RegistryValueKind.DWord); Registry.SetValue(featureControlRegKey + "FEATURE_AJAX_CONNECTIONEVENTS", appName, 1, RegistryValueKind.DWord); Registry.SetValue(featureControlRegKey + "FEATURE_GPU_RENDERING", appName, 1, RegistryValueKind.DWord); Registry.SetValue(featureControlRegKey + "FEATURE_WEBOC_DOCUMENT_ZOOM", appName, 1, RegistryValueKind.DWord); // Disable FEATURE_NINPUT_LEGACY_MODE Registry.SetValue(featureControlRegKey + "FEATURE_NINPUT_LEGACYMODE", appName, 0, RegistryValueKind.DWord); }
この更新された構成により、Web ブラウザー コントロールはアプリケーションの IE10 と IE11 の両方のエミュレーション設定で適切に機能するようになります。
以上がFEATURE_BROWSER_EMULATION を IE10 または IE11 に設定すると、Visual Studio の Web ブラウザー コントロールが誤動作するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。