J'ouvre une page Web dans IE9 - et tout à coup, le mode document passe en mode Quirks. La page elle-même est très simple - pas de doctype, pas de balise META, juste un morceau de javascript (à des fins de test) à l'intérieur du xslt formant la page.
Voir http://home.arcor.de/martin.honnen/xslt/test2012041901.xml en utilisant le xsl mentionné au même emplacement. Pour plus de commodité, j'ai copié le contenu ci-dessous.
Le contenu de la page est
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test2012041901.xsl"?>
<test/>
Et xsl contient
<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>
Pourquoi cela arrive-t-il? Est-ce un paramètre d'options Internet qui déclenche cela? Comment puis-je éviter que le mode excentrique soit automatiquement choisi dans IE9?
. Mais quoi?
Les outils de développement F12 affichent ce qui suit dans la console:
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
Vous ne savez pas de quoi parle le message de marque d'ordre des octets - peut-être est-ce lié au problème?
Oh et les outils de développement le montrent également dans la partie script:
㼼浸敶獲潩㵮ㄢ〮•湥潣楤杮∽呕ⵆ∸㸿㰊砿汭猭祴敬桳敥⁴祴数∽整瑸砯汳•牨晥∽整瑳〲㈱㐰㤱砮汳㼢ਾ琼獥⽴ਾ
Notez que tout cela ne se produit qu'avec les onglets nouvellement ouverts, pas déjà existants en mode bizarreries.
Comme personne ne saute sur l'occasion, je répondrai moi-même à la question.
Comme l'a indiqué paulsm4 en commentaire de la question, c'est le doctype manquant qui déclenche le mode excentrique. Voir http://hsivonen.iki.fi/doctype/ pour un excellent aperçu des doctypes, des types de navigateur et des modes de navigation résultants.
En ce qui concerne la drôle de chaîne de caractères asiatiques - j'ai fait d'autres recherches à ce sujet et j'ai découvert d'où cela venait. J'ai ouvert un nouveau fichier dans UltraEdit, l'ai d'abord converti d'utf-8 en unicode, puis copié le texte. Le résultat en vue hexadécimale révèle tout:
Comme nous le voyons, c'est juste le fichier xml téléchargé, plus une marque d'ordre d'octets précédente FF FE, qui selon wikipedia est un Little Endian utf-16:
Maintenant, pour les messages dans la console: l'ordre des événements dans le navigateur est apparemment le suivant:
Avez-vous essayé de définir explicitement la compatibilité dans le code HTML que vous générez?
HTML5 doctype mettant IE9 en mode bizarre?
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"/>
..