¿El control WebBrowser de IE9 admite todas las funciones de IE9, incluido SVG?

Recientemente me actualicé a IE9-beta. Ahora, en mi aplicación .Net (3.5) WinForm, quiero usar WebBrowser control WebBrowser .

Entonces mi pregunta es si el control WebBrowser exhibirá todas las propiedades y funciones de IE9.

Mi preocupación es, quiero renderizar algunos gráficos SVG en él.

La “versión” IE9 del control WebBrowser, como la versión IE8, es en realidad varios navegadores en uno. A diferencia de la versión IE8, usted tiene un poco más de control sobre el modo de representación dentro de la página al cambiar el tipo de documento. Por supuesto, para cambiar el modo de navegador, debe configurar su registro como la respuesta anterior. Aquí hay un fragmento de archivo de registro para 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 

Aquí está el conjunto completo de códigos:

  • 9999 (0x270F) – Internet Explorer 9. Las páginas web se muestran en el modo Estándares IE9, independientemente de la directiva! DOCTYPE.
  • 9000 (0x2328) – Internet Explorer 9. Las páginas web que contienen directivas! DOCTYPE basadas en estándares se muestran en modo IE9.
  • 8888 (0x22B8): las páginas web se muestran en el modo de estándares IE8, independientemente de la directiva! DOCTYPE.
  • 8000 (0x1F40) : las páginas web que contienen directivas! DOCTYPE basadas en estándares se muestran en modo IE8.
  • 7000 (0x1B58) : las páginas web que contienen directivas! DOCTYPE basadas en estándares se muestran en el modo de estándares IE7.

Los documentos completos:

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

El control WebBrowser utilizará cualquier versión de IE que haya instalado, pero por razones de compatibilidad, representará las páginas en el modo Estándares IE7 de forma predeterminada.

Si desea aprovechar las nuevas características de IE9, debe agregar la etiqueta meta dentro de la etiqueta de su página HTML.

Esta metaetiqueta debe agregarse antes de cualquier enlace a CSS, archivos JavaScript, etc. que también estén en su para que funcionen correctamente (solo otras tags o la etiqueta pueden aparecer antes).

Una alternativa es agregar una entrada de registro a:

HKLM> SOFTWARE> Microsoft> Internet Explorer> Principal> FeatureControl> FEATURE_BROWSER_EMULATION

Y allí agregue ‘myApplicationName.exe’ con el valor ‘9000’ para forzar al control WebBrowser a mostrar páginas en modo IE9. Aunque también hay otros valores que puede usar , tenga en cuenta que estos documentos no son del todo precisos, ya que no parece posible hacer que una página se presente en modo IE 8 sea cual sea el valor que utilice.

Agregar la clave de registro a la misma ruta en HKCU en lugar de HKLM también funcionará; esto es útil ya que escribir en HKLM requiere privilegios de administrador cuando HKCU no lo hace.

Gracias a Dios, encontré esto. Lo siguiente es extremadamente importante:

  

Sin esto, ninguno de los informes que había estado generando funcionaría después de la instalación de IE9 a pesar de haber funcionado de maravilla en IE8. Se mostrarían correctamente en un control de navegador web, pero habría letras faltantes, espacio en blanco, etc, cuando llamé a .Print (). Eran solo HTML básico que debería poder renderizarse incluso en mosaico. heh No estoy seguro de por qué el modo de compatibilidad IE7 se estaba volviendo loco. En particular, podría .Imprimir () la misma página 5 veces y hacer que le falten letras diferentes cada vez. Incluso se transferiría a PDF, por lo que definitivamente es el navegador.

Una nota sobre Windows de 64 bits que parece tropezar con algunas personas. Si su aplicación se ejecuta en Windows de 64 bits, es probable que tenga que configurar la DWORD en [HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION].

Solo para ser completo …

Debe agregar una entrada de registro a:

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

Para sistema operativo de 32 bits

*******O*******

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

Para 64 bits OS

y esta entrada debe ser un DWORD, con el nombre que es el nombre de su ejecutable, que aloja el control Webbrowser; es decir:

myappname.exe (NO USE “Contoso.exe” como en la página web de MSDN … es solo un nombre de marcador de posición)

Luego, dale un valor DWORD, de acuerdo con la tabla de:

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

Cambié a 11001 decimal o 0x2AF9 hex — (IE 11 EMULATION)

¿POR QUÉ ese no es el valor PREDETERMINADO? (Cuando tiene IE 11 instalado, o cualquier versión), en lugar de IE 7 u 8, nunca lo sabré …

Sé que este hilo es antiguo y ya hay respuestas completas.

En caso de que no sepas esto:

No es necesario codificar el número de versión de IE como

Estoy totalmente de acuerdo con la solución provista, pero creo que una pequeña aclaración es importante, creo, podría ser necesaria.

Para cada proceso (lea también: vshost.exe, yourWinformApplication.exe.svchost, o el nombre de su application.exe) que necesitará agregar un DWORD con el valor proporcionado, en mi caso dejo 9000 (en decimal) en la aplicación nombre y funcionando sin problemas y script libre de errores.

el error más común es creer que es necesario agregar “contoso.exe” TAL CUAL y ¡pensar que todo funciona!

Sí, el control WebBrowser usa cualquier versión de IE que haya instalado. Esto significa, por supuesto, que si ejecuta su aplicación en una máquina con IE 8, entonces las características de IE 9 de las que depende no estarán disponibles.

¡Llegué a esta solución y no funcionó para mí! Debido a que estaba usando 64 bits, tuve que reemplazar el registro:

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

En lugar del que todos hablan:

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

Me gustó el código (C #) a continuación, que establece la configuración del registro para su aplicación. No estoy seguro si cortará después de la instalación aunque si se requieren permisos. Para mí, resolvió un problema con WebSocket que no estaba disponible dentro de un control WebBrowser en WPF.

C # webbrowser llamada Ajax

Tuve el mismo problema, y ​​las respuestas del registro aquí no funcionaron.

Tenía un control de navegador en la nueva versión de mi progtwig que funcionaba bien en XP, falló en Windows 7 (64 bit). La versión anterior funcionaba tanto en XP como en Windows 7.

La página web que se muestra en el navegador utiliza algún complemento extraño para mostrar mapas SVG antiguos (creo que es un applet de Java).

Resulta que el problema está relacionado con la protección DEP en Windows 7.

Las versiones antiguas de dotnet 2 no configuraban el indicador DEP requerido en el exe, pero desde dotnet 2, SP 1 en adelante lo hacía (sí, el comportamiento de comstackción y, por lo tanto, el comportamiento de exe en tiempo de ejecución, según el equipo que compiló, es bueno. ..).

Está documentado en un blog MSDN NXCOMPAT y el comstackdor C # . Para citar: Esto sin duda sorprenderá a algunos desarrolladores … descargue un paquete de servicios de framework, recompile, ejecute su aplicación y obtendrá ahora las excepciones de IP_ON_HEAP.

Agregando lo siguiente a la comstackción posterior en Visual Studio, desactiva DEP para el exe y todo funciona como se espera:

 all "$(DevEnvDir)..\tools\vsvars32.bat" editbin.exe /NXCOMPAT:NO "$(TargetPath)" 
  • Editar la documentación
  • Dumpbin /headers mostrará la configuración DEP en un exe.

En cuanto a la respuesta aceptada de Whitehawk. Solo estoy tratando de agregar un poco de experiencia práctica. Solo estaba tratando de agregar un comentario, pero SO se queja de que es demasiado largo.

Básicamente, sin IE 9 instalado, el modificador de registro FEATURE_BROWSER_EMULATION no funcionará en absoluto.

Por ejemplo, mi propia experiencia de hoy estaba tratando de hacer que el .NET webcontrol funcionara con el modo IE10 porque un html que estoy tratando de procesar no funcionará con .netControl en VS2012, y ni siquiera funcionará cuando cargue el html en IE8 directamente, still css no se procesará correctamente (incluso después de decir permitir contenido bloqueado). Pero probé el mismo html ok con IE10 en la máquina ganadora de un amigo. Es por eso que estoy tratando de configurar el .net webControl al modo IE 10, pero sigue fallando …

Ahora pensé que esto es mi máquina de ganar 7 solo tiene IE8 instalado, así que independientemente de qué valor establezca para el interruptor FEATURE_BROWSER_EMULATION (valor para IE9, IE10 IE11), simplemente no funcionará en absoluto!

Luego descargué e instalé IE 10 en mi máquina de ganar 7. Aún así no funcionará, luego agregué el FEATURE_BROWSER_EMULATION, ¡comenzó a funcionar!

También noté independientemente de qué valor configuré, incluso lo configuré en el valor 0 de forma predeterminada, el webControl aún usa el modo IE 10, que aún funciona para mí.

Para resumir, si tiene IE X instalado pero quiere que .Net webControl funcione bajo IE (X + N) N> 0 modo, DOS cosas que debe hacer:

  1. Vaya al sitio web de MS y descargue e instale IE (X + N) en su máquina, deberá reiniciar después de la instalación.

  2. aplicar la respuesta de Whitehawk.

Básicamente: Para controlar el valor de esta característica mediante el registro, agregue el nombre de su archivo ejecutable a la siguiente configuración y establezca el valor para que coincida con la configuración deseada.

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

Windows Internet Explorer 8 y posterior. La característica FEATURE_BROWSER_EMULATION define el modo de emulación predeterminado para Internet Explorer y admite los siguientes valores.

Descripción del valor

  • 11001 (0x2AF9 Internet Explorer 11. Las páginas web se muestran en modo de borde IE11, independientemente de la directiva! DOCTYPE.

    11000 (0x2AF8) IE11. Las páginas web que contienen directivas! DOCTYPE basadas en estándares se muestran en modo de borde IE11. Valor predeterminado para IE11.

    10001 (0x2711) Internet Explorer 10. Las páginas web se muestran en el modo Estándares IE10, independientemente de la directiva! DOCTYPE.

    10000 (0x02710) Internet Explorer 10. Las páginas web que contienen directivas! DOCTYPE basadas en estándares se muestran en el modo de estándares IE10. Valor predeterminado para Internet Explorer 10.

    9999 (0x270F) Windows Internet Explorer 9. Las páginas web se muestran en el modo Estándares IE9, independientemente de la directiva! DOCTYPE.

    9000 (0x2328) Internet Explorer 9. Las páginas web que contienen directivas! DOCTYPE basadas en estándares se muestran en modo IE9. Valor predeterminado para Internet Explorer 9.

    Importante En Internet Explorer 10, las páginas web que contienen directivas! DOCTYPE basadas en estándares se muestran en el modo Estándares IE10.

    8888 (0x22B8) Las páginas web se muestran en el modo Estándares IE8, independientemente de la directiva! DOCTYPE.

    8000 (0x1F40) Las páginas web que contienen directivas! DOCTYPE basadas en estándares se muestran en modo IE8. Valor predeterminado para Internet Explorer 8 Importante En Internet Explorer 10, las páginas web que contienen directivas! DOCTYPE basadas en estándares se muestran en el modo Estándares IE10.

    7000 (0x1B58) Las páginas web que contienen directivas! DOCTYPE basadas en estándares se muestran en el modo Estándares IE7. Valor predeterminado para las aplicaciones que alojan el control WebBrowser.

Ref completo aquí