9

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

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

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

ответ

10

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

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

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

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

+0

Спасибо. Я добавил метатег X-UA-совместимый. Все еще пытаюсь подтвердить, не делает ли это трюк ... – KristoferA

+0

Что было результатом использования метатега? Я смог проверить его, и это сработало. – Garett

+0

До сих пор у меня есть неубедительный результат теста на метатег.Неконкретно, потому что после применения тега он был отображен правильно, но после изменения метатега на IE7 он все равно отображается правильно, а после его удаления он все равно отображается правильно. Другими словами, после первого раунда тестов я не смог воспроизвести ошибку рендеринга, которую я видел перед использованием метатега. Мне нужно сделать еще несколько тестов, но еще не успели это сделать ... – KristoferA

3

Чтобы изменить поведение по умолчанию Control Web Browser работает в вашем приложении, чтобы соответствовать, что делает сам IE, вы должны установить FEATURE_BROWSER_EMULATION Key Feature Control.

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

Внутри HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl

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

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

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

Дальнейшие подробности по адресу: http://blogs.msdn.com/b/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx

+0

Проблема в том, что мое приложение на самом деле является надстройкой, которая работает внутри другого приложения. В главном приложении также размещается MSIE, а также другие надстройки для него. Добавляя ключ реестра функций, я изменил приложение поведения и внедрил нежелательное поведение/рендеринг. Я хочу изменить его только для одной формы, где я размещаю MSIE, оставив все остальные браузеры под одним и тем же основным исполняемым файлом без изменений. – KristoferA

+2

К сожалению, это не поддерживаемый сценарий. – EricLaw

+0

Хорошо, спасибо. Как насчет будущих версий IE, будут ли они действовать так же, как если бы они были более ранней версией при размещении в другом процессе? Я должен сказать, что мне кажется странным, что IE8 по умолчанию не ведет себя как IE8, а затем использует элемент реестра для тех, кто хочет, чтобы он вел себя как IE7/6/5/etc – KristoferA