Как программно отключить режим причуд в элементе управления IE8 WebBrowser? - PullRequest
20 голосов
/ 15 марта 2009

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

Ответы [ 5 ]

25 голосов
/ 20 марта 2009

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

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

Атрибут «content» запускает рендеринг в различных режимах.

14 голосов
/ 15 марта 2009

Я думаю, что проблема, с которой вы сталкиваетесь, описана в IEBlog: режимы рендеринга WebBrowser Control в 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 элементов управления в вашем конкретном приложении.

4 голосов
/ 15 марта 2009

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

3 голосов
/ 18 марта 2009

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

0 голосов
/ 31 декабря 2013

Имеется реальный код, позволяющий программно сделать это, и он обрабатывает до IE11:

C # веб-браузер Ajax call

...