Comment faire pour mettre le contrôle WebBrowser dans IE9 dans les normes?

je suis l'aide de l'automation (c'est à dire d'automatisation COM) pour afficher le code HTML dans Internet Explorer (9):

ie = CoInternetExplorer.Create;
ie.Navigate2("about:blank");
webDocument = ie.Document;
webDocument.Write(szSourceHTML);
webDocument.Close();
ie.Visible = True;

Internet Explorer s'affiche, montrant mon html, qui commence par:

<!DOCTYPE html>
<HTML>
<HEAD>
   ...

Remarque: les normes html5 en mode opt-in doctype html

Sauf que le document n'est pas dans les normes ie9 mode; c'est dans ie8 normes de la mode:
Comment faire pour mettre le contrôle WebBrowser dans IE9 dans les normes?


Si je enregistrer le code html de mon premier ordinateur:

Comment faire pour mettre le contrôle WebBrowser dans IE9 dans les normes?

et puis vue que document html, c'est à dire est mis en mode standard:

Comment faire pour mettre le contrôle WebBrowser dans IE9 dans les normes?

Ma question est comment mettre à jour mon SpawnIEWithSource(String html) fonction pour lancer le navigateur en mode standard?

void SpawnIEWithSource(String html)
{
   Variant ie = CoInternetExplorer.Create();
   ie.Navigate2("about:blank");
   webDocument = ie.Document;
   webDocument.Write(html);
   webDocument.Close();
   ie.Visible = true;
}

Edit: Un plus détaillé, moins compréhensible ou un code lisible de l'échantillon, qui n'aide pas davantage la question pourrait être:

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();

Mise à jour

Auteur a demandé à la ieblog entrée Les tests de sites avec le Navigateur en Mode vs Doc Mode:

Pouvons-nous obtenir une description de la façon dont le mode de document est déterminé lorsque le contenu HTML est incorporé à l'intérieur d'un webcontrol? Semble que le mode de document est choisie de façon différente - peut-être pour des raisons de compatibilité?

MarkSil [MSFT] a répondu:

@Thomas: Merci pour soulever cette question. Le Contrôle WebBrowser détermine la doc de la mode de la même façon que IE n', car il contient la même plate-forme web (par exemple, il est partagé mshtml.dll à travers IE et Contrôle WebBrowser hôtes). Le Contrôle WebBrowser ne par défaut pour le mode de Compatibilité en mode navigateur, ce qui signifie que par défaut, la doc est en mode IE7. Voici un blog avec plus de détails sur ce: blogs.msdn.com/.../more-ie8-extensibility-improvements.aspx.

À laquelle Thomas a répondu:

@MarcSil (re: Contrôle WebBrowser)

Le problème avec les entrées de registre pour sélectionner le mode de document pour WebControl, c'est qu'il s'applique à l'ensemble de la demande. - Je écrire un plugin pour Google SketchUp où vous avez WebDialog windows pour créer de l'Isu - c'est juste un contrôle WebBrowser dans une fenêtre. Mais cela conduit à des problèmes que je veux forcer un mode de document pour mon exemple du contrôle WebBrowser, pas pour tous de la LIGUE du contrôle WebBrowser dans son ensemble.

Donc, ma question est: comment contrôler le mode de document par exemple pour un contrôle WebBrowser?

  • vous ne savez pas si vous avez vérifié ma réponse, comme il semble d'accord avec ce que vous avez publié dans votre mise à jour..
  • Ne fonctionne pas, a répondu à votre réponse directement.
InformationsquelleAutor Ian Boyd | 2010-11-04