Antes de leer:
Antes de leer el contenido específico del artículo, espero que pueda abrir IE8 primero, abrirhttp ://www.taobao.comY luego ingrese en la barra de direcciones:
javascript:alert(document.documentMode +navigator.userAgent);void(0)
No sé si te sorprenderá después de ver los resultados. De todos modos, lo encuentro muy extraño, porque no hay una etiqueta de compatibilidad en el meta de la página y no hay una etiqueta compatible con X-UA en el encabezado http cuando Fiddler verifica. ¿Por qué diablos el sitio web se ejecuta en modo IE7 ?
Modo de compatibilidad de IE7 y vista de compatibilidad
Ayer, cuando estaba leyendo un artículo sobre iframe altamente adaptable en Word of Mouth, descubrí que la demostración que proporcionaba era diferente de mi demostración en IE8. El resultado en línea era obviamente el mismo que en IETester7. sin marca de compatibilidad en el meta, Fiddler comprueba que no haya ninguna marca de compatibilidad con X-UA en el encabezado http, pero ¿por qué los resultados en línea son diferentes de los locales? Esto me deprimió. Después de verlo nuevamente, descubrí que la demostración en línea no mostraba el botón "Vista de compatibilidad" en IE8. Pensándolo bien, esta debe ser la razón.
Más tarde encontré un artículo Just The Facts: Recap of Compatibility View. Aunque no resolvió el problema, el contenido era bueno. Me gustaría compartirlo y citar uno de sus pasajes.
La Vista de compatibilidad y la etiqueta Compatible con X-UA no son equivalentes
La Vista de compatibilidad es algo que se hace en el cliente. Afecta tres cosas: la cadena del Agente de usuario, el Vector de versión (utilizado en la evaluación de comentarios condicionales) y el modo al que se asignan los DOCTYPE que activan los Estándares: Estándares IE8 o Estándares IE7. -La etiqueta/encabezado <META> compatible con UA es algo que se utiliza en el contenido de la página/del lado del servidor y, cuando está presente, anula por completo la configuración de la Vista de compatibilidad en el cliente. Afecta dos cosas: el vector de versión y el modo de DOCTYPE que activan los estándares. map to. No puede afectar la cadena UA porque ya es demasiado tarde para cambiarla: el cliente ya realizó la solicitud GET al servidor (y contiene una cadena UA). Lo que esto significa para los desarrolladores es que si su sitio gira. en la cadena del Agente de usuario, agregar solo la etiqueta Compatible con X-UA (para hacer que IE8 muestre su sitio en modo Estándar IE7) no hará que su sitio web sea compatible; también deberá actualizar la lógica de detección de cadenas del Agente de usuario como Bueno.
Esto significa que la vista de compatibilidad desempeña tres funciones:
La metaetiqueta solo juega dos roles: 1. Versión, 2. Tipo de documento
(Aquí se dice que la metaetiqueta no afecta al UserAgent. Debe hacer referencia a ua en el lado del servidor. Debido a que la solicitud del cliente se ha enviado y contiene ua, no se verá afectada. Sin embargo, la ua del cliente todavía está afectado y se muestra ie7.)
correcto:
(Tal vez la prueba anterior fue incorrecta) La ua del cliente no se verá afectada, solo afectará a document.documentMode
además:
La etiqueta/encabezado <META> se refiere respectivamente a: <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"> y agrega encabezados http en el lado del servidor, como en el archivo de configuración .net:
Además, también puedes agregar encabezados http a IIS o Apache:
resolución de problemas
En este punto, el problema al principio del artículo aún no está resuelto. Anoche vi accidentalmente el artículo de Qin Ge sobre el uso de doctype para activar el modo de navegador . Mencionó que el modo de compatibilidad también se habilitará en la lista negra de sitios de Microsoft. El artículo anterior Uno de los dos comentarios es: res://iecompat.dll/iecompatdata.xml (solo IE8). Ingrese esta dirección en IE8 y se mostrará: Lista de Vista de compatibilidad. De esta manera, finalmente podrá encontrar el dominio. nombres de Koubei y Taobao en esta lista, así que creo que esta debería ser la respuesta a la pregunta al principio de este artículo. También puede encontrar un nombre de dominio en esta lista, abrirlo e ingresar el javascript al comienzo de. El artículo en la barra de direcciones (ps: Microsoft tiene demasiadas listas), convierte tantos sitios a IE7.
<configuración>
<sistema.servidorweb>
<Protocolo http>
<encabezados personalizados>
<claro/>
<añadir nombre="X-UA-Compatible" valor="IE=EmularIE7" />
</customHeaders>
</httpProtocolo>
</sistema.servidorweb>
</configuración>