Как программно отключить режим quirks в IE8 WebBrowser control?
Вопрос
Я хочу использовать IE8 в качестве элемента управления веб-браузером в приложении на C #.Как я могу отключить "режим причуд" и принудительно привести IE в соответствие со стандартами (насколько это реализовано)?
Решение
Я думаю, что проблема, с которой вы столкнулись, описана в IEBlog:Веб-браузер Управляет режимами рендеринга в IE8:
В то время как веб-мастера могут легко изменить свой сайт для правильного отображения в новой версии IE, у многих поставщиков программного обеспечения нет ресурсов для мгновенного выпуска новых версий своих приложений с обновленными внутренними страницами.Чтобы гарантировать, что эти существующие приложения остаются в рабочем состоянии, IE8 отображает страницы, запущенные в экземплярах элемента управления WebBrowser, в Стандартном режиме IE7 по умолчанию.
Здесь я должен отметить, что в комментариях на странице говорится, что вышесказанное неверно, и что "IE8 по умолчанию отображает страницы, запущенные в экземплярах элемента управления WebBrowser, в строгом режиме IE7 или режиме Quirks, в зависимости от типа документа страницы."
Решение заключается в следующем:
Когда исполняемый файл загружает экземпляр элемента управления WebBrowser, он сканирует реестр, чтобы проверить, поддерживает ли исполняемый файл стандарты IE7 или IE8 Стандартный режим.
...
Для запуска в стандартном режиме IE8 вставьте следующее значение реестра:
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_NATIVE_DOCUMENT_MODE]
"MyApplication.exe"=dword:13880
В обоих этих случаях, MyApplication.exe должно быть заменено именем исполняемого файла, который будет запускать элементы управления WebBrowser в указанном режиме.
Таким образом, похоже, что "программное" решение состоит в том, чтобы записать ключ в реестре, в котором говорится, что вы хотите использовать стандартный режим IE8 для WebBrowser
элементы управления в вашем конкретном приложении.
Другие советы
Если вы не хотите использовать метод раздела реестра, вы могли бы вставить следующий тег:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
Атрибут "content" запускает рендеринг в различных режимах.
Последнее, что я услышал, было то, что IE8 будет использовать стандартный режим по умолчанию . Вы видите реальную проблему с последней бета-версией? Вы уверены, что это рендеринг в режиме причуд, чтобы начать с того, чтобы пользователь явно не нажал на кнопка просмотра совместимости ?
Обратите внимание, что после бета-тестирования произошли некоторые изменения, ключи реестра были переименованы и т. д. Подробнее читайте здесь .
Здесь есть реальный код, позволяющий сделать это программно, и он до сих пор обрабатывает до IE11: