IE9 默认应用 MSXML6,而 IE8 应用 MSXML3。MSXML6 中某些功能默认关闭的事实会导致麻烦,尤其是在加载页面时
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<root>...</root>
其中提到的 xslt 样式表应用嵌入式 javascript(例如,自定义扩展函数)。
可以在脚本代码中设置 DOM xslt 属性,例如在 Jscript 中:
var xsltDoc = new ActiveXObject("Msxml2.DOMDocument.6.0");
xsltDoc.setProperty("AllowXsltScript", true);
xsltDoc.loadXML(xsltfile);
但是在加载上面提供的文件时,IE9 会自动加载 xslt 文件,并使用默认属性值。这导致与 IE8 的显着差异:IE8 将完美地加载页面,但 IE9 由于默认的 MSXML6 DOM 对象属性“允许 xslt scripting = false”而引发错误。这不是真的 - 请参阅下面的答案。因此问题的其余部分无关紧要
如何触发 IE9 加载上面的文件并仍然允许在 xslt 中运行脚本?
注意:我已经按照 msdn 的建议尝试了 Internet 选项/安全/自定义级别.../脚本/活动脚本 = 启用,但该设置已经正确。
我希望有一个特定的 IE9 处理指令可用,但我想没有。但也许这是一个特殊的样式表属性,它与 IE9 xslt 加载配合使用。
结论也可能是,这只能通过在主 html 文件上运行脚本来实现,其中不进行自动加载,而是将 XML 和 XSLT 加载到具有指定属性(如 AllowXsltScript)的指定 DOM 对象中,并且然后将转换显式加载到浏览器中。