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

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

поэтому мой вопрос в том, является ли WebBrowser control покажет все свойства и функции IE9?

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

12 ответов


IE9 "версия" элемента управления WebBrowser, как и версия IE8, на самом деле несколько браузеров в одном. В отличие от версии IE8, у вас есть немного больше контроля над режимом рендеринга внутри страницы путем изменения doctype. Конечно, чтобы изменить режим браузера, вы должны установить свой реестр, как и предыдущий ответ. Вот фрагмент файла 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) -затем отображается в режиме стандартов 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 control будет использовать любую версию IE, которую вы установили, но по соображениям совместимости он будет отображать страницы в режиме стандартов IE7 по умолчанию.

если вы хотите воспользоваться новыми функциями IE9, вы должны добавить мета-тег <meta http-equiv="X-UA-Compatible" content="IE=9" > внутри <head> тег вашей HTML-страницы.

этот мета-тег должен быть добавлен перед любой ссылки в CSS, файлы JavaScript и т. д., которые также в своем <head> работать правильно, хотя (только другие <meta> теги или <title> тег может появиться перед ним).

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

HKLM > программное обеспечение > Microsoft > Internet Explorer > Main > FeatureControl > FEATURE_BROWSER_EMULATION

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

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


слава богу, я нашел это. Чрезвычайно важно следующее:

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

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


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


просто, чтобы быть полным...

необходимо добавить запись реестра в:

раздел HKEY_LOCAL_MACHINE\программное обеспечение\Майкрософт\Интернет Эксплорер\главная\мыши featurecontrol\FEATURE_BROWSER_EMULATION

для 32bit ОС

*******или*******

раздел HKEY_LOCAL_MACHINE\программное обеспечение\Wow6432Node\Майкрософт\Интернет Эксплорер\главная\мыши 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 decimal или 0x2af9 hex - - - (т. е. эмуляция 11)

Почему это не по умолчанию значение (когда у вас установлен IE 11 - или любая версия), а не IE 7 или 8, я никогда не узнаю...


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

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

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

вам не нужно жестко кодировать номер версии IE как

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


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

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

самая распространенная ошибка-считать, что необходимо добавить " contoso.exe " как есть и думаю, что все это работает!


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


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

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-вызов


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

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

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

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

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

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

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

all "$(DevEnvDir)..\tools\vsvars32.bat"
editbin.exe /NXCOMPAT:NO "$(TargetPath)"

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

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

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

теперь я понял, что это bcos моя машина 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, две вещи вам нужно do:

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

  2. применить ответ whitehawk.

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

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 режим edge, независимо от !Директива DOCTYPE.

    11000 (0x2AF8) IE11. Веб-страницы, содержащие стандарты на основе !DOCTYPE директивы отображаются в режиме IE11 edge. Значение по умолчанию для 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) интернет Проводник 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.

полный ref здесь