Элемент управления MSIEs WebBrowser, размещенный в приложении winforms, работает в режиме совместимости.

Я принимаю MSIE в форме winforms. К сожалению, он настаивает на том, чтобы работать в режиме совместимости, независимо от того, если я дам ему страницу, которая работает в режиме IE8 в автономном IE. Результатом этого является то, что некоторый контент, который корректно отображается в автономном MSIE, полностью выровнен и испорчен в размещенном элементе управления.

Помимо типа документа и т. Д., Есть ли какой-нибудь волшебный способ сообщить веб-браузеру, что я хочу, чтобы он отображал страницу так же, как если бы я загружал ее в автономном MSIE?

Я не хочу использовать переопределение ключа реестра ( http://blogs.msdn.com/b/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx) из-за того, что моя форма является частью надстройки для другого приложения. Я не хочу менять поведение IE для основного приложения и не хочу менять его для других надстроек, работающих под этим приложением. Я хочу, чтобы это работало только в браузере, размещенном в моей форме, а не на уровне приложения и не на уровне процесса.

2 ответа

Решение

Я не проверял это, но как насчет использования тега META вместе с атрибутом HTTP-EQUIV, чтобы установить X-UA-COMPATIBLE значение для IE=8, который инструктирует веб-браузер отображать страницу в стандартном режиме IE 8. Примером может быть:

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

Из этой строки в следующей статье кажется, что это должно работать.

По умолчанию приложения, в которых размещается элемент управления WebBrowser, открывают основанные на стандартах страницы в режиме IE7, если только страница не содержит соответствующего заголовка, совместимого с X-UA. Вы можете изменить это, добавив имя исполняемого файла приложения к управляющей клавише функции FEATURE_BROWSER_EMULATION и установив соответствующее значение.

Чтобы изменить поведение по умолчанию для элемента управления веб-браузера, работающего в вашем приложении, в соответствии с тем, что делает сам IE, необходимо установить ключ управления функциями FEATURE_BROWSER_EMULATION.

Например, вы можете имитировать поведение IE8 (позволяя сайтам отображаться в режиме стандартов IE8) следующим образом.

Inside HKEY_LOCAL_MACHINE \ Программное обеспечение \Microsoft\Internet Explorer\Main\FeatureControl

Создайте новый ключ с именем FEATURE_BROWSER_EMULATION

Внутри этого ключа добавьте новый REG_DWORD со значением 8000 с именем исполняемого файла вашего приложения. Например:

"YourApp.exe" = dword 8000 (Hex: 0x1F40)

Более подробная информация по адресу: http://blogs.msdn.com/b/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx