Web ブラウザ コントロール エミュレーション (FEATURE_BROWSER_EMULATION) の背後にある問題を明らかにする
C# Web ブラウザ コントロール アプリケーションで特定の Web ページに移動できない場合がある特にレジストリ内の FEATURE_BROWSER_EMULATION 設定が異なる場合は、一見簡単そうに見えます。 Guy からの興味深いクエリは、この機能を使用してブラウザのバージョンをエミュレートするときに発生する一般的な問題の背後にある根本原因を調査します。
背景:
Guy は Visual Studio を使用して単純なアプリケーションを作成しました2013 では、Web ブラウザー コントロールを利用して Dojo Toolkit Web サイト上のページにアクセスします。 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 中国語 Web サイトの他の関連記事を参照してください。