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をコンピューターに保存する場合:
次に、そのhtmlドキュメントを表示すると、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]は次のように回答しました:
@トーマス:その質問を提起してくれてありがとう。WebBrowser Controlは、IEと同じ方法でdocモードを決定します。これは、同じWebプラットフォームが含まれているためです(たとえば、IEとWebBrowser Controlホスト間で1つの共有mshtml.dllがあります)。WebBrowserコントロールは、デフォルトで互換表示ブラウザモードになります。つまり、デフォルトのドキュメントモードはIE7です。これに関する詳細が記載されたブログ投稿は次のとおりです:blogs.msdn.com/.../more-ie8-extensibility-improvements.aspx。
トーマスが答えた:
@MarcSil(re:WebBrowser Control)
レジストリエントリを使用してWebControlのドキュメントモードを選択する場合の問題は、アプリケーション全体に適用されることです。私は、UIを作成するためのWebDialogウィンドウがあるGoogleSketchUp用のプラグインを作成します。これはウィンドウ内の単なるWebBrowserコントロールです。しかし、SUのすべてのWebBrowserコントロール全体ではなく、WebBrowserコントロールのインスタンスにドキュメントモードを強制したいので、これは問題につながります。
だから、私の質問は、WebBrowserコントロールのインスタンスごとにドキュメントモードをどのように制御するかということです。