我在 IE9 中打开一个网页 - 突然文档模式切换到 Quirks 模式。页面本身非常简单 - 没有 doctype,没有元标记,只是形成页面的 xslt 内的一段(测试目的)javascript。
请参阅http://home.arcor.de/martin.honnen/xslt/test2012041901.xml在同一位置使用提到的 xsl。为方便起见,我复制了以下内容。
页面内容是
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test2012041901.xsl"?>
<test/>
而 xsl 包含
<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>
为什么会这样?它是触发此的互联网选项设置吗?如何防止在 IE9 中自动选择怪癖模式?
并且:在同一页面的早些时候,这种自动怪癖模式没有发生——我一定做了一些事情,比如更改设置,甚至可能只是来回返回原始值,这导致了这种行为的改变。但是什么?
F12 开发人员工具在控制台中显示以下内容:
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
不确定字节顺序标记消息的全部内容 - 也许与问题有关?
哦,开发工具也在脚本部分显示了这一点:
㼼浸敶獲潩㵮ㄢ〮•湥潣楤杮∽呕ⵆ∸㸿㰊砿汭猭祴敬桳敥⁴祴数∽整瑸砯汳•牨晥∽整瑳〲㈱㐰㤱砮汳㼢ਾ琼獥⽴ਾ
请注意,所有这些仅发生在新打开的选项卡上,而不是现有的处于怪癖模式的选项卡。