ホームページ >バックエンド開発 >C++ >FEATURE_BROWSER_EMULATION を IE10 または IE11 に設定すると、Web ブラウザーの制御が誤動作するのはなぜですか?

FEATURE_BROWSER_EMULATION を IE10 または IE11 に設定すると、Web ブラウザーの制御が誤動作するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-01 01:33:02836ブラウズ

Why Does Setting FEATURE_BROWSER_EMULATION to IE10 or IE11 Cause Web Browser Control Malfunction?

FEATURE_BROWSER_EMULATION による Web ブラウザ コントロール エミュレーションの問題の調査

コンテキスト

Web ブラウザ コントロールをアプリケーション内で使用する場合、サポートするには特定の互換性設定が必要になることがよくあります。 Web コンテンツのレンダリング。 FEATURE_BROWSER_EMULATION は、開発者が Web ブラウザ コントロールが使用するブラウザ モードを制御できるようにするレジストリ設定です。ただし、この機能に設定された特定の値はエミュレーションの問題を引き起こす可能性があります。

問題

ユーザーは、FEATURE_BROWSER_EMULATION を IE10 または IE11 の値に設定すると、Web ブラウザー コントロールが誤動作する状況に遭遇しました。具体的には、Dojo Toolkit カレンダーのデモ サイトの月の日付ピッカーが機能しなくなりました。 FEATURE_BROWSER_EMULATION 設定なし、または IE9 エミュレーションに設定されている場合、コントロールは正しく動作しました。

解決策

この問題は、WebBrowser コントロールの最適化と機能強化とともに FEATURE_NINPUT_LEGACY_MODE レジストリ設定を無効にすることで解決されました。実装された変更の詳細な検査は次のとおりです。

  1. FEATURE_NINPUT_LEGACY_MODE を無効にする: デフォルトでは、この設定は有効になっていますが、無効にすると、Web ブラウザー コントロールで NINPUT API が確実にサポートされます。
  2. CLIPCHILDREN と GPU_RENDERING を有効にする: これらの設定により、ブラウザー コントロールが高速レンダリングとクリッピングを使用できるようになり、パフォーマンスが向上します。開発者は、潜在的な互換性の問題に対してこれらの機能のバランスを取る必要があります。
  3. AJAX_CONNECTIONEVENTS と WEBOC_DOCUMENT_ZOOM を有効にします: これらの設定により、Web アプリケーションの応答性が向上し、Web ページの動的なサイズ変更が可能になります。

次のコード サンプルは、C# でこれらのレジストリ値を設定する方法を示しています。

<code class="c#">const string FEATURE_BROWSER_EMULATION = @"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\";
        
Registry.SetValue(FEATURE_BROWSER_EMULATION + "FEATURE_BROWSER_EMULATION", appName, GetBrowserEmulationMode(), RegistryValueKind.DWord);
Registry.SetValue(FEATURE_BROWSER_EMULATION + "FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION", appName, 1, RegistryValueKind.DWord);
Registry.SetValue(FEATURE_BROWSER_EMULATION + "FEATURE_AJAX_CONNECTIONEVENTS", appName, 1, RegistryValueKind.DWord);
Registry.SetValue(FEATURE_BROWSER_EMULATION + "FEATURE_GPU_RENDERING", appName, 1, RegistryValueKind.DWord);
Registry.SetValue(FEATURE_BROWSER_EMULATION + "FEATURE_WEBOC_DOCUMENT_ZOOM", appName, 1, RegistryValueKind.DWord);
Registry.SetValue(FEATURE_BROWSER_EMULATION + "FEATURE_NINPUT_LEGACYMODE", appName, 0, RegistryValueKind.DWord);</code>

以上がFEATURE_BROWSER_EMULATION を IE10 または IE11 に設定すると、Web ブラウザーの制御が誤動作するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。