9

Estoy alojando MSIE en un formulario de winforms. Lamentablemente, insiste en ejecutar en modo compatibilidad independientemente de si le doy una página que se ejecuta en modo IE8 en IE independiente. El efecto de esto es que algunos contenidos que se procesan correctamente en MSIE independiente se alinean completamente mal y se estropean en el control alojado.El control WebBrowser de MSIE alojado en la aplicación winforms se ejecuta en modo de compatibilidad

Además del tipo de documento, etc., ¿hay alguna manera mágica de decirle al navegador web que quiero que muestre la página de la misma manera que si la cargara en un MSIE independiente?

No deseo utilizar la anulación de clave de registro (http://blogs.msdn.com/b/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx) debido a que mi formulario forma parte de un complemento para otra aplicación. No quiero cambiar el comportamiento de IE para la aplicación principal y no quiero cambiarlo por otros complementos que se ejecutan bajo esa aplicación. Solo quiero que esto funcione dentro del navegador alojado en mi formulario, no en toda la aplicación ni en todo el proceso.

Respuesta

10

No he probado esto, pero cómo sobre el uso de la etiqueta META, junto con el atributo HTTP-EQUIV, para establecer el valor X-UA-COMPATIBLE a IE=8, que indica al navegador web para visualizar una página en IE 8 modo estándar. Un ejemplo sería:

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

partir de esta línea en el siguiente article parece que esto debería funcionar.

Por defecto, el alojamiento de aplicaciones abiertas las páginas basadas en estándares el control WebBrowser en modo IE7 menos que la página contiene un cabecera X-UA-Compatible apropiado. Puede cambiar esto agregando el nombre del archivo ejecutable de la aplicación a la función FEATURE_BROWSER_EMULATION y estableciendo el valor en consecuencia.

+0

Gracias. He agregado la metaetiqueta X-UA-Compatible. Todavía estoy intentando confirmar si funciona ... – KristoferA

+0

¿Cuál fue el resultado del uso de la metaetiqueta? Pude probarlo y funcionó. – Garett

+0

Hasta ahora tengo un resultado de prueba no concluyente en la etiqueta meta.Inconclusive porque después de aplicar la etiqueta se procesó correctamente, pero después de cambiar la metaetiqueta a IE7 aún se procesó correctamente, y después de eliminarla nuevamente se procesó correctamente. En otras palabras, después de la primera ronda de pruebas, no pude reproducir el error de representación que estaba viendo antes de usar la metaetiqueta. Necesito hacer algunas pruebas más, pero aún no he tenido tiempo de hacerlo ... – KristoferA

3

Para cambiar el comportamiento predeterminado del control del explorador Web que se ejecuta en su aplicación para que coincida con lo que hace en sí IE, debe establecer la clave de control de funciones FEATURE_BROWSER_EMULATION.

Por ejemplo, puede imitar el comportamiento de IE8 (permitiendo que los sitios se procesen en el modo de estándares IE8) de la siguiente manera.

Dentro HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl

Crear una nueva clave llamada FEATURE_BROWSER_EMULATION

Dentro de esa clave, añadir un nuevo REG_DWORD con el valor con el nombre del ejecutable de su aplicación. Ej .:

"YourApp.exe" = dword 8000 (Hex: 0x1F40) 

Más detalles se encuentran en: http://blogs.msdn.com/b/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx

+0

El problema es que mi aplicación es en realidad un complemento que se ejecuta dentro de otra aplicación. La aplicación principal también aloja MSIE, al igual que otros complementos para ella. Al agregar la clave de registro de control de funciones, cambiaré la aplicación de comportamiento de ancho e introduciré un comportamiento/representación no deseada. Quiero cambiarlo solo por el único formulario donde alojo MSIE, dejando intactos todos los demás navegadores que se ejecutan bajo el mismo ejecutable principal. – KristoferA

+2

Desafortunadamente, ese no es un escenario admitido. – EricLaw

+0

Ok, gracias. ¿Qué hay de las versiones futuras de IE, también van a actuar como si fueran una versión anterior cuando se alojan en otro proceso? Debo decir que me parece extraño que IE8 no se comporte como IE8 de forma predeterminada, y luego use la cosa de registro para aquellos que quieren que se comporte como IE7/6/5/etc – KristoferA

Cuestiones relacionadas