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 对象属性“allow xslt scripting = false”。 这不是真的 - 请参阅下面我的回答。因此,问题的其余部分无关紧要
如何触发 IE9 加载上面的文件并仍然允许在 xslt 中运行脚本?
注意:我已经按照 msdn 上的建议尝试了 Internet 选项/安全/自定义级别.../脚本/事件脚本 = 启用,但该设置已经正确。
我希望有一个特定的 IE9 处理指令可用,但我想没有。但是也许有一个特殊的样式表属性可以配合 IE9 xslt 加载。
结论也可能是这只能通过在主 html 文件上运行脚本来实现,其中没有自动加载,但 XML 和 XSLT 被加载到具有指定属性(如 AllowXsltScript)的指定 DOM 对象中,并且输出然后将转换显式加载到浏览器中。
最佳答案
我在 http://home.arcor.de/martin.honnen/xslt/test2012050301.xml 尝试了一个例子样式表为 http://home.arcor.de/martin.honnen/xslt/test2012050301.xsl它适用于我和 Windows 7 上的 IE 9。基于该脚本即使在 IE 9 使用 MSXML 版本 6 执行样式表时也会启用。如果您遇到错误,则必须有其他原因,或者您的代码必须有某些特殊之处,您将需要发布最少但完整的详细信息,以便我们重现该问题。
关于javascript - 如何让 IE9 MSXML6 执行包含 javascript 的集成 XSLT 处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10432821/