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

StackOverflow https://stackoverflow.com/questions/4612255

Вопрос

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

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

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

Это было полезно?

Решение

IE9 «Версия» WebBrowser Control, подобна версии IE8, на самом деле несколько браузеров в одном. В отличие от версии IE8, у вас есть немного больше контроля над режимом рендеринга внутри страницы, изменив DOCTYPE. Конечно, чтобы изменить режим браузера, который вы должны установить ваш реестр, как более ранний ответ. Вот фрагмент файла REG для функции_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, вы должны добавить мета-тег <meta http-equiv="X-UA-Compatible" content="IE=9" > внутри <head> Тег вашей HTML-страницы.

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

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

HKLM> Программное обеспечение> Microsoft> Internet Explorer> Главная> FeatureControl> Fixe_Browser_emulation

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

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

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

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

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

Примечание о 64-битных окнах, которые, кажется, путешествуют несколько человек. Если ваше приложение работает под 64битом Windows, вы, вероятно, придется установить DWORD под [HKLM Software WOW6432NODE Microsoft WOW6432NODE Microsoft Internet Explorer Main Featurecontrol fience_browser_emulation].

Просто чтобы быть завершенным ...

Для 32-битной ОС вы должны добавить запись реестра на:

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

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

Для 64-битной ОС вы должны добавить запись реестра на:

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

Эта запись должна быть DWORD, с именем, имеющим имя вашего исполняемого исполнения, который проходит контроль WebBrowser; IE:

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 эмуляции), поскольку это не значение по умолчанию (если у вас установлено IE 11 - или какая-то версия).

Эта статья MSDN содержит записи по нескольким другим изменениям реестра, которые влияют на поведение веб-браузера Internet Explorer.

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

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

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

Вам не нужно Hardcode IE номер версии как

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

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

Для каждого процесса (читайте также: vshost.exe, yourwinformapplation.exe.svchost или имя вашего application.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 не установили флаг DOP требуемого в exe, но из Dotnet 2, SP 1, а затем он сделал (да, поведение компиляции и, следовательно, поведение времени выполнения EXE изменилось в зависимости от того, какую машину вы скомпилировали, приятно. ..).

Он задокументирован в блоге MSDN Nxcompat и c # компилятор. Отказ Цитировать : Это, несомненно, удивит несколько разработчиков ... Загрузите Package Package Framework, перекомпилируйте, запустите свое приложение, и теперь вы получите исключения IP_ON_HEAP.

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

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

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

В основном, без установки IE 9, выключатель реестра_Browser_emulation не будет работать вообще.

Например, мой собственный опыт сегодня я пытался получить .NET WebControl работать с режимом IE10, потому что один HTML я пытаюсь рендер не работать с .NETControl под VS2012, и даже не работает, когда я загружаю HTML к IE8 Прямой, все еще CSS не будет должным образом (даже после того, как я говорю, разрешить заблокированное содержимое). Но я проверил тот же HTML OK с IE10 на машине Win Win Moks 8. Вот почему я пытаюсь установить .NET WebControl в режим IE 10, но просто продолжает не удавать ...

Теперь я полагал, что это BCO My Win 7 Machine имеет только IE8, установленную только IE8, поэтому независимо от того, какое значение я установил на переключатель функции_Browser_emulation (значение к IE9, IE10 IE11), он просто не будет работать вообще!

Затем я скачал и установил IE 10 на моем компьютере Win 7. Еще не будет работать, то я добавил функцию_browser_emulation, она начала работать!

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

Итоги, чтобы обобщить, если у вас установлен 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. Веб-страницы отображаются в режиме EM11 Edge, независимо от направленности! DOCTYPE.

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

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

    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, веб-страницы, содержащие директивы на основе стандартов! Доттеп, отображаются в режиме стандартов IE10.

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

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

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

Полный реф здесь

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top