Pregunta

Estoy utilizando la automatización (es decir, la automatización COM) para mostrar algo de HTML en Internet Explorer (9):

ie = CoInternetExplorer.Create;
ie.Navigate2("about:blank");
webDocument = ie.Document;
webDocument.Write(szSourceHTML);
webDocument.Close();
ie.Visible = True;

aparece Internet Explorer, mostrando mi html, que comienza como:

<!DOCTYPE html>
<HTML>
<HEAD>
   ...
  

Nota: de HTML5 estándares en modo opt-in tipo de documento html

excepto que el documento no está en modo de IE9 normas; está en el modo estándar de IE8: text alt


Si salvo el html en mi equipo primero:

text alt

y luego ver que Documento HTML, IE se pone en modo estándar:

text alt

Mi pregunta es cómo actualizar mi función SpawnIEWithSource(String html) para lanzar el navegador en modo estándar?

void SpawnIEWithSource(String html)
{
   Variant ie = CoInternetExplorer.Create();
   ie.Navigate2("about:blank");
   webDocument = ie.Document;
   webDocument.Write(html);
   webDocument.Close();
   ie.Visible = true;
}

Edit: Una más prolija, menos comprensible ejemplo de código o legible, no hace que ayuda aún más la pregunta podría ser:

IWebBrowser2 ie;
CoCreateInstance(CLASS_InternetExplorer, null, CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, IID_WebBrowser2, ie);
ie.AddRef();
ie.Navigate2("about:blank");

IHtmlDocument doc;
dispDoc = ie.Document;
dispDoc.AddRef();
dispDoc.QueryInterface(IHTMLDocument2, doc);
dispDoc.Release()
doc.Write(html); 
doc.Close();
doc.Release();
ie.Visible = true;
ie.Release();

Actualizar

comentarista preguntó sobre la entrada IEBlog sitios de prueba con el modo de navegación frente al modo Doc :

  

¿Se puede obtener una descripción de cómo se determina el modo de documento cuando el contenido HTML está dentro de una de webcontrol incorporado? Parece ser que el modo de documentos se elige de manera diferente - tal vez por razones de compatibilidad

MarkSil [MSFT] respondió:

  

@Thomas: Gracias por elevar esa pregunta. El control WebBrowser determina el modo de doc de la misma manera que IE hace, ya que contiene la misma plataforma web (por ejemplo hay una mshtml.dll compartida a través de IE y Control WebBrowser hosts). El control WebBrowser de activación del modo de navegador de vista de compatibilidad, lo que significa que el modo por defecto es doc IE7. Aquí es un blog con más detalle sobre esto: blogs.msdn.com /.../ más-ie8-extensibilidad-improvements.aspx .

A lo que Tomás respondió:

  

@MarcSil (re: Control WebBrowser)

     

El problema con el uso de las entradas de registro para seleccionar el modo de documento para WebControl es que se aplica a la aplicación en su conjunto. Escribo plugins para Google SketchUp donde tiene ventanas WebDialog para crear interfaces de usuario - es sólo un control WebBrowser en una ventana. Pero eso conduce a problemas como yo quieren forzar un modo de documentos para mi instancia del control WebBrowser, no para todos los controles WebBrowser de la UB en su conjunto.

     

Por lo tanto, mi pregunta es:? ¿Cómo controlar el modo de documento por ejemplo, para un control WebBrowser

¿Fue útil?

Solución

¿Usted ha intentado establecer en su html la

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

o

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

lo que significa versión más reciente

Otros consejos

La "versión" IE9 del control WebBrowser, al igual que la versión de Internet Explorer 8, es en realidad varios navegadores en uno. A diferencia de la versión de Internet Explorer 8, usted tiene 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 de navegador que tiene que fijar su registro como la respuesta anterior. Esta es la ubicación de FEATURE_BROWSER_EMULATION:

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

Éste es el conjunto completo de códigos:

  • 9999 (0x270F) - Internet Explorer 9. Las páginas web se muestran en IE9 Modo de normas, independientemente de la ! DOCTYPE Directiva.
  • 9000 (0x2328) - Internet Explorer 9. Las páginas web que contienen basados ??en estándares DOCTYPE directivas se muestran en el modo de IE9.
  • 8888 (0x22B8) -Webpages son que aparece en el modo estándar de IE8, independientemente de la directiva! DOCTYPE.
  • 8000 (0x1F40) - Las páginas web que contiene basados ??en estándares! DOCTYPE directivas se muestra en el modo IE8.
  • 7000 (0x1B58) - Las páginas web que contiene basados ??en estándares! DOCTYPE directivas se muestran en el modo estándar de IE7.

Los documentos completos:

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

FEATURE_BROWSER_EMULATION no funciona CoInternetSetFeatureEnabled . La documentación de INTERNETFEATURELIST no se actualiza desde IE7.

Dado que el ajuste de la función es en HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl que pueden sea capaz de anular el valor en su proceso a través de un gancho API de registro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top