Как программно отключить режим совместимости в IE8 управления WebBrowser?

Я хочу использовать IE8 в качестве элемента управления WebBrowser в приложении c#. Как я могу отключить "режим причуд" и заставить IE соответствовать стандартам (насколько это реализовано)?

5 ответов


Я думаю, что проблема, с которой вы столкнулись, описанных в IEBlog: режимы рендеринга управления WebBrowser в IE8:

В то время как веб-мастера могут легко изменить их сайт правильно отображался в новая версия IE, много программного обеспечения у поставщиков нет ресурсов для мгновенно выталкивать новые версии их приложения с обновленным внутренняя страница. Для обеспечения того, чтобы эти существующие приложения остаются в рабочем состоянии, IE8 отображает страницы работает в экземпляров элемента управления WebBrowser в Режим стандартов IE7 по умолчанию.

здесь я должен отметить, что комментарии на странице говорят, что выше неверно, и что "IE8 отображает страницы, запущенные в экземплярах элемента управления WebBrowser в строгом режиме IE7 или режиме причуд по умолчанию, в зависимости от типа документа страницы."

решение выглядит следующим образом:

когда исполняемый файл загружает экземпляр из Управление WebBrowser оно сканирует реестр для проверки исполняемый файл хочет стандарты IE7 или IE8 Стандартный режим.

...

для работы в режиме стандартов IE8 вставьте следующее значение реестра:

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_NATIVE_DOCUMENT_MODE]

"MyApplication.exe"=dword:13880

в обоих случаях, Мое_приложение.exe должны быть заменены с именем исполняемого файла, будет работать элемент управления WebBrowser в указанный режим.

таким образом, похоже, что "программное" решение-написать ключ в реестре, говоря, что вы хотите режим стандартов IE8 для WebBrowser элементы управления в вашем конкретном приложении.


Если вы не хотите использовать метод раздела реестра, вы можете вставить следующий тег:

<meta http-equiv="X-UA-Compatible" content="IE=8" />

атрибут "content"заставляет рендеринг в различных режимах.


последнее, что я слышал, было то, что IE8 будет использовать стандартный режим по умолчанию. Вы видите реальную проблему с последней бета-версии? Вы уверены, что это рендеринг в режиме причуд, чтобы начать с, без явного нажатия пользователем режим совместимости на кнопку?


обратите внимание, что после бета-версии произошли некоторые изменения, разделы реестра были переименованы и т. д. подробнее здесь.


Это имеет фактический код, чтобы программно сделать это и обрабатывает до IE11 до сих пор:

В C# WebBrowser с AJAX-вызов