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



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



Так что мой вопрос, Является ли WebBrowser управление будет отображать все свойства и функции IE9?



меня беспокоит, что я хочу сделать на нем некоторые графики SVG.

613   12  

12 ответов:

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

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

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

Я изменил на 11001 десятичный или 0x2af9 шестнадцатеричный - - - (т. е. 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 control использует любую версию 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 call

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

у меня был контроль браузера в новой версии моей программы, которая отлично работала на 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#. Цитирую:это, несомненно, удивит несколько разработчиков...загрузите пакет обновления для платформы, перекомпилируйте, запустите приложение, и теперь вы получаете 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, две вещи вам нужно делать:

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

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

полная ссылка здесь

Comments

    Ничего не найдено.