internet explorer - some - Por qué HTML1113: el modo de documento se reinicia desde los estándares IE9 a los extraños
the attached page targets document mode 7 (2)
Abrí una página web en IE9 y, de repente, el modo de documento cambia al modo Quirks. La página en sí misma es muy simple: sin doctype, sin metaetiqueta, solo una parte de JavaScript (JavaScript de prueba) dentro del xslt que forma la página.
Ver http://home.arcor.de/martin.honnen/xslt/test2012041901.xml usando el xsl mencionado en la misma ubicación. Para mayor comodidad, copié el contenido a continuación.
El contenido de la página es
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test2012041901.xsl"?>
<test/>
Y xsl contiene
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns:ms="urn:schemas-microsoft-com:xslt"
xmlns:my="http://example.com/my"
exclude-result-prefixes="ms my">
<xsl:output method="html" version="5.0"/>
<ms:script language="JScript" implements-prefix="my">
<![CDATA[
function tokenize (input) {
var doc = new ActiveXObject(''Msxml2.DOMDocument.6.0'');
var fragment = doc.createDocumentFragment();
var tokens = input.split('';'');
for (var i = 0, l = tokens.length; i < l; i++)
{
var item = doc.createElement(''item'');
item.text = tokens[i];
fragment.appendChild(item);
}
return fragment.selectNodes(''item'');
}
]]>
</ms:script>
<xsl:template match="/">
<html>
<head>
<title>Example</title>
</head>
<body>
<h1>Example</h1>
<ul>
<xsl:apply-templates select="my:tokenize(''Kibology;for;all'')"/>
</ul>
</body>
</html>
</xsl:template>
<xsl:template match="item">
<li>
<xsl:value-of select="."/>
</li>
</xsl:template>
</xsl:stylesheet>
¿Por qué pasó esto? ¿Es una configuración de opciones de Internet que desencadena esto? ¿Cómo puedo evitar que el modo peculiar se elija automáticamente en IE9?
Y: antes con la misma página no se produjo este modo de peculiaridades automáticas: debo haber hecho algo, como un cambio de configuración, tal vez incluso una vez más y volver al valor original otra vez, lo que condujo a este cambio de comportamiento. ¿Pero que?
Las herramientas de desarrollador F12 muestran lo siguiente en la consola:
XML5001: Applying Integrated XSLT Handling.
HTML1114: Codepage unicode from (UNICODE byte order mark) overrides conflicting codepage utf-8 from (10)
test2012041901.xml
HTML1113: Document mode restart from IE9 Standards to Quirks
test2012041901.xml
HTML1114: Codepage unicode from (UNICODE byte order mark) overrides conflicting codepage utf-8 from (10)
test2012041901.xml
No estoy seguro de qué se trata el mensaje de orden de bytes, quizás relacionado con el problema.
Oh y las herramientas de desarrollo también muestran esto en la parte del script:
㼼浸敶獲潩㵮ㄢ〮•湥潣楤杮∽呕ⵆ∸㸿㰊砿汭猭祴敬桳敥⁴祴数∽整瑸砯汳•牨晥∽整瑳〲㈱㐰㤱砮汳㼢ਾ琼獥⽴ਾ
Tenga en cuenta que todo esto solo ocurre con las pestañas recién abiertas, ya no existentes en el modo peculiar.
¿Has intentado establecer explícitamente la compatibilidad en el HTML que generas?
Doctype HTML5 poner IE9 en modo peculiar?
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
..
Como nadie salta a la altura, responderé la pregunta yo mismo.
Como paulsm4 indicó en el comentario a la pregunta, es el tipo de documento faltante que desencadena el modo peculiar. Consulte http://hsivonen.iki.fi/doctype/ para obtener una descripción general excelente de los tipos de documentos, tipos de navegadores y modos de navegador resultantes.
Con respecto a la divertida secuencia de caracteres asiáticos, investigué un poco más sobre esto y descubrí de dónde viene. Abrí un nuevo archivo en UltraEdit, lo convertí de utf-8 a Unicode primero y luego copié el texto. El resultado en la vista hexadecimal lo revela todo:
Como vemos, es solo el archivo xml cargado, más una marca de orden de bytes anterior FF FE, que de acuerdo con wikipedia es una utf-16 Little Endian:
Ahora para los mensajes en la consola: el orden de los eventos en el navegador es aparentemente el siguiente:
- obtener archivo XML
- obtener el archivo XSL referido y aplicar la transformación (XML5001); resultado del proceso
- BOM = FF FE que es utf-16 reemplaza a utf-8 mencionado en el encabezado xml (HTML1114)
- IE9 nota que falta el tipo de documento, cambia al modo peculiar (HTML1113) y vuelve a cargar el archivo de resultados
- De nuevo, la codificación BOM anula la codificación del encabezado xml (HTML1114)
- Archivo mostrado