Как поместить элемент управления WebBrowser в IE9 в стандарты?

я использую автоматизацию (то есть автоматизацию COM) для отображения некоторого HTML в Internet Explorer (9):

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

Internet Explorer появляется, показывая мой html, который начинается как:




   ...

Примечание : стандартный режим html5 opt-in 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 находится во встроенном веб-элементе управления? Кажется, что режим документа выбран по-другому - может быть, из соображений совместимости?

MarkSil [MSFT] ответил:

@Thomas: Спасибо, что подняли этот вопрос. Элемент управления WebBrowser определяет режим документа так же, как и IE, поскольку он содержит ту же веб-платформу (например, существует один общий файл mshtml.dll для узлов IE и элементов управления WebBrowser). Элемент управления WebBrowser по умолчанию работает в режиме просмотра в режиме совместимости, что означает, что режим документа по умолчанию - IE7. Вот сообщение в блоге с более подробной информацией об этом: blogs.msdn.com /.../ more-ie8-extensibility-sizes.aspx .

На что Томас ответил:

@MarcSil (re: WebBrowser Control)

Проблема с использованием записей реестра для выбора режима документа для WebControl заключается в том, что он применяется ко всему приложению в целом. Я пишу плагины для Google SketchUp, где у вас есть окна WebDialog для создания пользовательских интерфейсов - это просто элемент управления WebBrowser в окне. Но это приводит к проблемам, поскольку я хочу принудительно установить режим документа для моего экземпляра элемента управления WebBrowser, а не для всех элементов управления SU WebBrowser в целом.

Итак, мой вопрос: как вы управляете режимом документа для каждого экземпляра для элемента управления WebBrowser?

27
задан Ian Boyd 4 November 2010 в 15:59
поделиться