質問

インターネットエクスプローラー(9)にHTMLを表示するために、自動化(つまりCOM Automation)を使用しています。

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標準モードです:alt text


最初にHTMLをコンピューターに保存する場合:

alt text

そして、表示します それ HTMLドキュメント、IEは標準モードに入れられます。

alt text

私の質問は、どのように私を更新するかです 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コンテンツが組み込みWebControl内にあるときにドキュメントモードがどのように決定されるかについて説明できますか?ドキュメントモードの選択は異なっているようです - 多分互換性の理由で?

マークシル[MSFT]が応答しました:

@Thomas:その質問を提起してくれてありがとう。 Webbrowserコントロールは、同じWebプラットフォームが含まれているためにIEと同じ方法でDOCモードを決定します(たとえば、IEとWebbrowserコントロールホストに1つの共有MSHTML.DLLがあります)。 Webbrowserコントロールは、デフォルトで互換性ビューブラウザーモードになります。つまり、デフォルトのドキュメントモードはIE7です。これについての詳細が記載されたブログ投稿です。 blogs.msdn.com/.../more-ie8-extensibility-improvements.aspx.

トーマスが答えた:

@marcsil(re:webbrowserコントロール)

レジストリエントリを使用してWebControlのドキュメントモードを選択する問題は、アプリケーション全体に適用されることです。 Google SketchUp用のプラグインを作成します。ここでは、WebDialog Windowsがあり、UISを作成します。これは、ウィンドウ内のWebbrowserコントロールです。しかし、SUのすべての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

これがコードの完全なセットです:

  • 9999(0x270f) - インターネットエクスプローラー9. Webページは、!Doctypeディレクティブに関係なく、IE9標準モードで表示されます。
  • 9000(0x2328) - インターネットエクスプローラー9.標準ベースの!Doctypeディレクティブを含むWebページはIE9モードで表示されます。
  • 8888(0x22b8) -WebPagesは、!Doctypeディレクティブに関係なく、IE8標準モードで表示されます。
  • 8000(0x1f40) - 標準ベースのウェブページ!doctypeディレクティブはIE8モードで表示されます。
  • 7000(0x1b58) - 標準ベースのウェブページ!Doctypeディレクティブは、IE7標準モードで表示されます。

完全なドキュメント:

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 youの下にあります。 五月 レジストリAPIフックを介して、プロセスの値をオーバーライドできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top