¿El IE9 WebBrowser Control admitirá todas las funciones de IE9, incluido SVG?
Recientemente actualicé a IE9-beta. Ahora, en mi aplicación WinForm .Net (3.5) quiero usar WebBrowser
el control.
Entonces mi pregunta es, ¿si el WebBrowser
control exhibirá todas las propiedades y funciones de IE9?
Mi preocupación es que quiero representar algunos gráficos SVG en él.
El control WebBrowser utilizará cualquier versión de IE que haya instalado, pero por razones de compatibilidad mostrará las páginas en el modo Estándar de IE7 de forma predeterminada.
Si desea aprovechar las nuevas funciones de IE9, debe agregar la metaetiqueta <meta http-equiv="X-UA-Compatible" content="IE=9" >
dentro de la <head>
etiqueta de su página HTML.
Sin embargo, esta metaetiqueta debe agregarse antes de cualquier enlace a CSS, archivos JavaScript, etc. que también estén en su archivo <head>
para que funcione correctamente (solo otras <meta>
etiquetas o la <title>
etiqueta pueden ir 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 que el control WebBrowser muestre páginas en modo IE9. Aunque hay otros valores que también puedes usar , ten en cuenta que estos documentos no son del todo precisos ya que no parece posible hacer que una página se represente en modo IE 8, sea cual sea el valor que uses.
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, mientras que HKCU no.
La "versión" IE9 del control WebBrowser, al igual que la versión IE8, es en realidad varios navegadores en uno. A diferencia de la versión IE8, tienes un poco más de control sobre el modo de representación dentro de la página cambiando el tipo de documento. Por supuesto, para cambiar el modo del navegador debe configurar su registro como en 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ándar 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 Estándar 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 Estándares IE7.
Los documentos completos:
http://msdn.microsoft.com/en-us/library/ee330730%28VS.85%29.aspx#browser_emulation
Gracias a Dios encontré esto. Lo siguiente es extremadamente importante:
<meta http-equiv="X-UA-Compatible" content="IE=9" >
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 muy bien en IE8. Aparecerían correctamente en el control de un navegador web, pero faltarían letras, habría espacios en blanco aumentados, etc., cuando llamé a .Print(). Eran simplemente HTML básico que debería poder representarse incluso en Mosaic. Je, no estoy seguro de por qué el modo de compatibilidad de IE7 se estaba volviendo loco. En particular, puede .Print() la misma página 5 veces y hacer que le falten letras diferentes cada vez. Incluso se trasladaría a la salida PDF, por lo que definitivamente es el navegador.
Una nota sobre Windows de 64 bits que parece hacer tropezar a algunas personas. Si su aplicación se ejecuta en Windows de 64 bits, es probable que deba configurar el DWORD en [HKLM\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION].
Sé que este hilo es antiguo y ya hay respuestas completas.
Por si no sabes esto:
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
No es necesario codificar el número de versión de IE como
<meta http-equiv="X-UA-Compatible" content="IE=9" >