internet Explorer(9)で一部のHTMLを表示するためにオートメーション(つまりCOMオートメーション)を使用しています:
_ie = CoInternetExplorer.Create;
ie.Navigate2("about:blank");
webDocument = ie.Document;
webDocument.Write(szSourceHTML);
webDocument.Close();
ie.Visible = True;
_
Internet Explorerが表示され、私のhtmlが表示されます。
_<!DOCTYPE html>
<HTML>
<HEAD>
...
_
注:html5標準モードのオプトインDoctype
html
ドキュメントがie9標準モードでないことを除いて、 ie8標準モードです。
最初にHTMLをコンピューターに保存した場合:
次に、thathtmlドキュメントを表示し、IEが標準モードになります:
私の質問は、ブラウザを標準モードにするためにSpawnIEWithSource(String html)
関数をどのように更新するかです。
_void SpawnIEWithSource(String html)
{
Variant ie = CoInternetExplorer.Create();
ie.Navigate2("about:blank");
webDocument = ie.Document;
webDocument.Write(html);
webDocument.Close();
ie.Visible = true;
}
_
編集:より詳細で理解しにくい、または読みやすいコードサンプルですが、質問の助けにはなりません。
_IWebBrowser2 ie;
CoCreateInstance(CLASS_InternetExplorer, null, CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, IID_WebBrowser2, ie);
ie.AddRef();
ie.Navigate2("about:blank");
IHtmlDocument doc;
dispDoc = ie.Document;
dispDoc.AddRef();
dispDoc.QueryInterface(IHTMLDocument2, doc);
dispDoc.Release()
doc.Write(html);
doc.Close();
doc.Release();
ie.Visible = true;
ie.Release();
_
コメント投稿者がieblogエントリについて質問しました ブラウザモードとドキュメントモードを使用したテストサイト :
HTMLコンテンツが埋め込みWebコントロール内にある場合、ドキュメントモードがどのように決定されるかについての説明を取得できますか?ドキュメントモードの選択方法が異なるようです-互換性の理由からでしょうか?
MarkSil [MSFT]が応答しました:
@Thomas:その質問を提起してくれてありがとう。 WebBrowserコントロールは、IEと同じ方法でドキュメントモードを決定します。これは、同じWebプラットフォームが含まれているためです(たとえば、IEに1つの共有mshtml.dllがあり、 WebBrowser Controlのホスト。WebBrowserControlは、デフォルトで互換表示ブラウザモードに設定されます。つまり、デフォルトのドキュメントモードはIE7です。これについて詳しくは、ブログの投稿 blogs.msdn.com/ .. ./more-ie8-extensibility-improvements.aspx 。
トーマスはそれに応じました:
@MarcSil(re:WebBrowser Control)
レジストリエントリを使用してWebControlのドキュメントモードを選択する場合の問題は、アプリケーション全体に適用されることです。私は、UIを作成するためのWebDialogウィンドウがあるGoogle SketchUpのプラグインを作成します。これは、ウィンドウ内のWebBrowserコントロールにすぎません。しかし、SUのWebBrowserコントロール全体ではなく、WebBrowserコントロールのインスタンスにドキュメントモードを強制したいので、これは問題を引き起こします。
だから、私の質問です:WebBrowserコントロールのインスタンスごとにドキュメントモードをどのように制御しますか?
あなたのhtmlで設定してみましたか
<meta http-equiv="X-UA-Compatible" content="IE=9" />
または
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
最新バージョンを意味します
IE8のバージョンと同様に、WebBrowserコントロールのIE9の「バージョン」は、実際には1つの複数のブラウザーです。 IE8バージョンとは異なり、doctypeを変更することで、ページ内のレンダリングモードをもう少し制御できます。もちろん、ブラウザモードを変更するには、以前の回答のようにレジストリを設定する必要があります。 FEATURE_BROWSER_EMULATIONの場所は次のとおりです:
HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
SOFTWARE
Microsoft
Internet Explorer
Main
FeatureControl
FEATURE_BROWSER_EMULATION
contoso.exe = (DWORD) 000090000
コードの完全なセットは次のとおりです。
完全なドキュメント:
http://msdn.Microsoft.com/en-us/library/ee330730%28VS.85%29.aspx#browser_emulation
FEATURE_BROWSER_EMULATION は CoInternetSetFeatureEnabled では機能しません。 [〜#〜] internetfeaturelist [〜#〜] のドキュメントはIE7以降更新されていません。
機能設定はHKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControlの下にあるため、レジストリを使用してプロセスの値をオーバーライドできますmay APIフック。