Будет ли IE9 WebBrowser Control поддерживать все функции IE9, включая SVG?

Недавно я обновился до IE9-бета. Теперь, в моем приложении .Net (3.5) WinForm, я хочу использовать элемент управления WebBrowser .

Поэтому мой вопрос: будет ли элемент управления WebBrowser показывать все свойства и функции IE9?

Меня беспокоит, что я хочу отобразить на нем какую-то графику SVG.

IE9 «версия» элемента управления WebBrowser, как и версия IE8, на самом деле представляет собой несколько браузеров в одном. В отличие от версии IE8, у вас есть немного больше контроля над режимом рендеринга внутри страницы, изменяя doctype. Конечно, чтобы изменить режим браузера, вы должны установить свой реестр, как более ранний ответ. Вот fragment файла reg для FEATURE_BROWSER_EMULATION:

 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "contoso.exe"=dword:00002328 

Вот полный набор кодов:

  • 9999 (0x270F) – Internet Explorer 9. Веб-страницы отображаются в режиме стандартов IE9 независимо от директивы! DOCTYPE.
  • 9000 (0x2328) – Internet Explorer 9. Веб-страницы, содержащие стандартизованные! Директивы DOCTYPE отображаются в режиме IE9.
  • 8888 (0x22B8) -Webpages отображаются в стандартном режиме IE8, независимо от директивы! DOCTYPE.
  • 8000 (0x1F40) – Веб-страницы, содержащие стандартизованные! Директивы DOCTYPE отображаются в режиме IE8.
  • 7000 (0x1B58) – Веб-страницы, содержащие стандарты! Директивы DOCTYPE отображаются в режиме стандартов IE7.

Полные документы:

http://msdn.microsoft.com/en-us/library/ee330730%28VS.85%29.aspx#browser_emulation

Элемент управления WebBrowser будет использовать любую версию IE, которую вы установили, но по соображениям совместимости по умолчанию они будут отображаться в стандартах IE7 по умолчанию.

Если вы хотите использовать новые функции IE9, вы должны добавить метатег внутри вашей HTML-страницы.

Этот метатег должен быть добавлен перед любыми ссылками на CSS, файлы JavaScript и т. Д., Которые также находятся в вашем чтобы работать исправно, хотя (перед ним могут появляться только tags или ).

Альтернативой является добавление записи реестра:

HKLM> ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ> Microsoft> Internet Explorer> Главная> FeatureControl> FEATURE_BROWSER_EMULATION

И там добавьте «myApplicationName.exe» со значением «9000», чтобы заставить элемент управления WebBrowser отображать страницы в режиме IE9. Хотя есть и другие значения, которые вы тоже можете использовать , обратите внимание, что эти документы не совсем точны, поскольку не представляется возможным получить страницу для рендеринга в режиме IE 8 независимо от того, какое значение вы используете.

Добавление ключа реестра к одному и тому же пути в HKCU вместо HKLM также будет работать – это полезно, поскольку запись в HKLM требует прав администратора, где HKCU этого не делает.

Слава богу, я это нашел. Крайне важно следующее:

  

Без этого ни один из отчетов, которые я создал, не будет работать после установки IE9, несмотря на то, что он отлично работал в IE8. Они будут отображаться правильно в элементе управления веб-браузером, но при вызове .Print () будут отсутствовать буквы, поднять пробел и т. Д. Они были просто базовым HTML, который должен быть способен даже в Мозаике. heh Не уверен, почему режим совместимости с IE7 шел быстро. Примечательно, что вы могли бы .Print () на одной странице 5 раз и каждый раз пропускать разные буквы. Это даже переносится в PDF-выход, поэтому он определенно является браузером.

Заметка о 64-битной Windows, которая, кажется, отключает нескольких людей. Если ваше приложение работает под 64-разрядной Windows, скорее всего вам придется установить DWORD в [HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION].

Просто чтобы быть полным …

Вы должны добавить запись в реестр:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ MAIN \ FeatureControl \ FEATURE_BROWSER_EMULATION

Для 32-битной ОС

*******ИЛИ*******

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ MAIN \ FeatureControl \ FEATURE_BROWSER_EMULATION

Для 64-битной ОС

и эта запись должна быть DWORD, с именем, являющимся именем вашего исполняемого файла, который содержит элемент управления Webbrowser; то есть:

myappname.exe (НЕ ИСПОЛЬЗУЙТЕ «Contoso.exe», как на веб-странице MSDN … это просто имя заполнителя)

Затем дайте ему значение DWORD, согласно таблице:

http://msdn.microsoft.com/en-us/library/ee330730(v=vs.85).aspx#browser_emulation

Я изменился на 11001 десятичный или 0x2AF9 hex — (IE 11 EMULATION)

ПОЧЕМУ это не значение DEFAULT (если у вас установлен IE 11 или какая-либо версия), вместо IE 7 или 8 я никогда не узнаю …

Я знаю, что эта ветка устарела и уже есть исчерпывающие ответы.

На всякий случай вы этого не знаете:

Вам не нужно жестко указывать номер версии IE, как

Я полностью согласен с предоставленным решением, но я думаю, что небольшое разъяснение важно, я думаю, может быть необходимо.

Для каждого процесса (читайте также: vshost.exe, yourWinformApplication.exe.svchost или имя вашего приложения.exe), который должен будет добавить DWORD с предоставленным значением, в моем случае я оставляю 9000 (в десятичной) в приложении имя и работает плавно и без ошибок скрипт.

самая распространенная ошибка – полагать, что необходимо добавить «contoso.exe» КАК ЕСТЬ и думать, что все это работает!

Да, элемент управления WebBrowser использует любую версию IE, которую вы установили. Это означает, конечно, что если вы запустите свое приложение на компьютере с IE 8, то функции IE 9, от которых вы зависите, будут недоступны.

Я пришел к этому решению, и это не сработало для меня! Поскольку я использовал 64-битный, мне пришлось заменить реестр:

 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION 

Вместо того, о чем говорят все:

 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 

Мне понравился (C #) код в следующем, который устанавливает параметры реестра для вашего приложения. Не уверен, что он вырезает его после установки, хотя если необходимы разрешения. Для меня это решило проблему с тем, что WebSocket не был доступен внутри элемента управления WebBrowser в WPF.

C # webbrowser Ajax call

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

У меня был элемент управления браузером в новой версии моей программы, которая отлично работала на XP, а не в Windows 7 (64 бит). Старая версия работала как на XP, так и на Windows 7.

Веб-страница, отображаемая в браузере, использует какой-то странный плагин для показа старых SVG-карт (я думаю, что это Java-апплет).

Оказывается, проблема связана с защитой DEP в Windows 7.

В старых версиях dotnet 2 не был установлен обязательный флаг DEP в exe, но из dotnet 2, SP 1 и далее он выполнял (да, поведение компиляции и, следовательно, поведение exe в режиме исполнения изменилось в зависимости от того, на какой машине вы скомпилировались, приятно. ..).

Он задокументирован в блоге MSDN NXCOMPAT и компиляторе C # . Цитирую: это, несомненно, удивит некоторых разработчиков … загрузите пакет обновления инфраструктуры, перекомпилируйте, запустите приложение, и теперь вы получаете исключения IP_ON_HEAP.

Добавление следующего в пост-сборку в Visual Studio отключает DEP для exe, и все работает так, как ожидалось:

 all "$(DevEnvDir)..\tools\vsvars32.bat" editbin.exe /NXCOMPAT:NO "$(TargetPath)" 
  • Редактирование документации
  • Dumpbin /headers отобразит установку DEP на EXE.

Что касается принятого ответа белой яры. Я просто пытаюсь добавить немного опыта. Просто пытался добавить комментарии, но SO жалуется, что это слишком долго.

В принципе, без IE 9, переключатель реестра FEATURE_BROWSER_EMULATION не будет работать ВСЕ.

Например, мой собственный опыт сегодня я пытался получить .net webcontrol для работы с режимом IE10, потому что один html, который я пытаюсь выполнить, не будет работать с .netControl под VS2012 и даже не работать, когда я загружаю html в IE8 напрямую, css не будет отображаться должным образом (даже после того, как я скажу, что разрешено заблокированное содержимое). Но я тестировал один и тот же html ok с IE10 на машине выигрыша 8 друга. Вот почему я пытаюсь установить .net webControl в режим IE 10, но просто продолжает терпеть неудачу …

Теперь я понял, что это машина bcos my win 7 имеет только IE8, поэтому независимо от того, какое значение я устанавливаю в переключатель FEATURE_BROWSER_EMULATION (значение IE9, IE10 IE11), он просто не будет работать во ВСЕХ!

Затем я загрузил и установил IE 10 на свою машину win 7. Тем не менее это не сработает, затем я добавил FEATURE_BROWSER_EMULATION, он начал работать!

Также я заметил, независимо от того, какое значение я установил, даже установил значение 0 по умолчанию, webControl все еще использует режим IE 10, который все еще работает для меня.

Итак, чтобы подвести итог: если у вас установлен IE X, но вы хотите, чтобы ваш .Net webControl работал под IE (X + N) N> 0 modo, вам нужно сделать две вещи :

  1. Перейдите на веб-сайт MS, загрузите и установите IE (X + N) на свой компьютер, вам нужно будет перезагрузить компьютер после установки.

  2. примените ответ белой ястребы.

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

 HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER) SOFTWARE Microsoft Internet Explorer Main FeatureControl FEATURE_BROWSER_EMULATION contoso.exe = (DWORD) 00009000 

Windows Internet Explorer 8 и более поздних версий. Функция FEATURE_BROWSER_EMULATION определяет режим эмуляции по умолчанию для Internet Explorer и поддерживает следующие значения.

Значение Описание

  • 11001 (0x2AF9 Internet Explorer 11. Веб-страницы отображаются в режиме кеша IE11, независимо от директивы! DOCTYPE.

    11000 (0x2AF8) IE11. Веб-страницы, содержащие основанные на стандартах! Директивы DOCTYPE отображаются в режиме края IE11. Значение по умолчанию для IE11.

    10001 (0x2711) Internet Explorer 10. Веб-страницы отображаются в режиме стандартов IE10 независимо от директивы! DOCTYPE.

    10000 (0x02710) Internet Explorer 10. Веб-страницы, содержащие основанные на стандартах! Директивы DOCTYPE отображаются в режиме стандартов IE10. Значение по умолчанию для Internet Explorer 10.

    9999 (0x270F) Windows Internet Explorer 9. Веб-страницы отображаются в режиме стандартов IE9 независимо от директивы! DOCTYPE.

    9000 (0x2328) Internet Explorer 9. Веб-страницы, содержащие стандартизованные! Директивы DOCTYPE отображаются в режиме IE9. Значение по умолчанию для Internet Explorer 9.

    Важно В Internet Explorer 10 веб-страницы, содержащие стандартизованные! Директивы DOCTYPE отображаются в режиме стандартов IE10.

    8888 (0x22B8) Веб-страницы отображаются в режиме стандартов IE8 независимо от директивы! DOCTYPE.

    8000 (0x1F40) Веб-страницы, содержащие основанные на стандартах! Директивы DOCTYPE отображаются в режиме IE8. Значение по умолчанию для Internet Explorer 8 Важно В Internet Explorer 10 веб-страницы, содержащие стандартизованные! Директивы DOCTYPE отображаются в режиме стандартов IE10.

    7000 (0x1B58) Веб-страницы, содержащие основанные на стандартах! Директивы DOCTYPE отображаются в режиме стандартов IE7. Значение по умолчанию для приложений, на которых установлен элемент управления WebBrowser.

Полный текст здесь

  • Чтение переменной Javascript из элемента управления веб-браузера
  • Как отобразить PDF через веб-браузер Android без «загрузки» в первую очередь
  • что происходит, когда вы вводите URL-адрес в браузере
  • Как определить ориентацию устройства с помощью мультимедийных запросов CSS?
  • Когда браузер автоматически очищает кеш внешнего файла JavaScript?
  • Должны ли мы больше использовать нестандартные / браузерные префиксы поставщика CSS?
  • В чем разница между «Normal Reload», «Hard Reload» и «Empty Cache and Hard Reload» в Chrome?
  • JavaFX - может ли он действительно быть развернут в браузере?
  • Как браузер знает, когда запрашивать пользователя для сохранения пароля?
  • Как открыть браузер по умолчанию в C #
  • Почему Internet Explorer 11 не соблюдает условные комментарии даже при эмуляции режима документа Internet Explorer 8?
  • Давайте будем гением компьютера.