Pourquoi HTML1113: mode Document redémarrer à partir de IE9 Normes de Bizarreries
J'ouvre une page web dans IE9 - et tout d'un coup le document mode passe en mode Quirks. La page elle-même est mort simple - pas de doctype, pas de balise meta, juste un morceau de (but du test) javascript à l'intérieur de la xslt formant la page.
Voir http://home.arcor.de/martin.honnen/xslt/test2012041901.xml à l'aide de l'mentionnées xsl sur le même emplacement. Pour des raisons de commodité, j'ai copié le contenu ci-dessous.
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 se produit? Est-ce un internet options de réglage qui déclenche ce? Comment puis-je prévenir la mode quirks être automatiquement choisi dans IE9?
Et: plus tôt avec la même page automatique en mode quirks n'a pas eu lieu - je dois avoir fait quelque chose, comme un changement de réglage, peut-être même juste avant et en arrière à la valeur d'origine de nouveau, ce qui a conduit à cette modification du comportement. Mais quoi?
Les outils de développement F12 montrer le suivant 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
Pas sûr de ce que la marque d'ordre des octets du message est tout au sujet - peut-être que c'est lié à la question?
Oh et outils de dev aussi montrer dans la partie du script:
㼼浸敶獲潩㵮ㄢ〮•湥潣楤杮∽呕ⵆ∸㸿㰊砿汭猭祴敬桳敥⁴祴数∽整瑸砯汳•牨晥∽整瑳〲㈱㐰㤱砮汳㼢ਾ琼獥⽴ਾ
Noter que tout cela n'arrive qu'avec les nouveaux onglets ouverts, pas de celles qui existent dans le mode quirks déjà.
Vous devez vous connecter pour publier un commentaire.
Que personne ne saute à l'occasion, je vais répondre à la question moi-même.
Comme paulsm4 indiqué en commentaire à la question, c'est le manque doctype qui déclenche en mode quirks. Voir http://hsivonen.iki.fi/doctype/ pour un excellent aperçu de doctypes, les types de navigateur et résultant des modes navigateur.
À l'égard de la drôle de chaîne de caractères Asiatiques - j'ai fait quelques recherche sur ce et a découvert d'où il vient. J'ai ouvert un nouveau fichier dans UltraEdit, converti en utf-8 unicode d'abord, puis copié le texte. Le résultat en hexadécimal vue révèle tout:
Comme nous le voyons, c'est juste le fichier xml téléchargé, en plus d'une précédente marque d'ordre d'octet FF FE, qui, selon wikipédia, est un utf-16 Little Endian un:
Maintenant pour les messages dans la console: l'ordre des événements dans le navigateur est apparemment comme suit:
Avez-vous essayé de définir explicitement la compatibilité dans le code HTML que vous générer?
Doctype HTML5 mettre IE9 en mode quirks?