2

HTML/CSS 標準に関して、TWebBrowser コンポーネントの背景を説明してくれる人はいますか? IE 8 がインストールされた Windows 7 を使用しているにもかかわらず、IE8 で HTML ファイルを表示した場合と、同じ HTML ファイルを TWebBrowser で表示した場合に表示される結果が異なるのはなぜでしょうか。たとえば、HTML ファイルが TWebBrowser (Delphi 7) で表示される場合、CSS ファイル内の疑似要素p:beforeとは完全に無視されますが、同じ HTML ファイルが IE8 で表示される場合は考慮されます。p:first-letter

SHDOCVW.DLL はおそらく古すぎて、IE3 レンダリングに影響しているのでしょうか? 私は、IE8 が TWebBrowser を使用した場合とはかなり異なる HTML を頻繁にレンダリングする理由を理解しようとしています。

4

1 に答える 1

4

IE8 は、既定で IE7 標準モードの WebBrowser コントロールのインスタンス内で実行されているページをレンダリングします。そのため、表示される違いは、IE8 と IE7 標準の違いに基づいています。

実行可能ファイルが WebBrowser コントロールのインスタンスをロードするとき、レジストリをスキャンして、実行可能ファイルが IE7 標準または IE8 標準モードを必要としているかどうかを確認します。

IE8 での WebBrowser コントロールのレンダリング モード(非推奨) IE8 での
WebBrowser コントロールのレンダリング モード(更新)

IE7 標準モードで WebBrowser コントロールを実行するには、次の値をレジストリに挿入します。

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword 7000 (Hex: 0x1B58)

IE8 標準モードで実行するには、次のレジストリ値を挿入します。

 [(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword 8000 (Hex: 0x1F40)

これらの両方のインスタンスで、MyApplication.exe は、指定されたモードで WebBrowser コントロールを実行する実行可能ファイルの名前に置き換える必要があります。


そうは言っても、レジストリをいじる必要はありません。

WebBrowser コントロールでホストされるページは、X-UA-Compatibleメタ タグを使用してレンダリング モードを指定することにより、レンダリング設定をオーバーライドできます。

たとえば、IE8 TWebBrowser コントロールに IE8 標準使用でサイトをレンダリングするように強制するには、次のようにします。

<META http-equiv="X-UA-Compatible" content="IE=8">

これは、ホスト ヘッダーを介して、またはドキュメントごとの編集としてグローバルに実行できます。

メタ タグ ソリューションは廃止される可能性があります。レジストリの手順に従うことをお勧めします。

于 2013-07-07T21:54:31.067 に答える