IE11中的XSLT处理发生了什么?
在IE8/9/10中,您可以使用:
if (window.ActiveXObject) {
var xslt = new ActiveXObject("Msxml2.XSLTemplate");
....
}在Chrome/Firefox/Safari上,您可以使用:
else {
var xsltProcessor = new XSLTProcessor();
}但在IE11上,这两种方法都不受支持。有谁知道如何做到这一点吗?
发布于 2013-10-10 18:56:01
试一试
if (window.ActiveXObject || "ActiveXObject" in window)这对我使用IE11起了作用,并允许我实例化ActiveX对象,因为已经绕过了标准的旧检查。
发布于 2017-11-05 21:51:30
这在Chrome/Edge/Firefox/IE11上适用于我
function loadXMLDoc(filename) {
if (window.ActiveXObject || "ActiveXObject" in window) {
xhttp = new ActiveXObject("Msxml2.XMLHTTP");
} else {
xhttp = new XMLHttpRequest();
}
xhttp.open("GET", filename, false);
xhttp.send("");
return xhttp.responseXML;
}
if (window.ActiveXObject || "ActiveXObject" in window) {
ie();
} else {
xml = loadXMLDoc("input.xml");
xsl = loadXMLDoc("mmlctop2_0.xsl");
if (document.implementation && document.implementation.createDocument) {
xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
resultDocument = xsltProcessor.transformToDocument(xml, document);
var serializer = new XMLSerializer();
var transformed = serializer.serializeToString(resultDocument.documentElement);
alert(transformed);
}
}
// https://msdn.microsoft.com/en-us/library/ms753809(v=vs.85).aspx
function ie() {
var xslt = new ActiveXObject("Msxml2.XSLTemplate.3.0");
var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.3.0");
var xslProc;
xslDoc.async = false;
xslDoc.load("mmlctop2_0.xsl");
if (xslDoc.parseError.errorCode != 0) {
var myErr = xslDoc.parseError;
alert("You have error " + myErr.reason);
} else {
xslt.stylesheet = xslDoc;
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
xmlDoc.async = false;
xmlDoc.load("input.xml");
if (xmlDoc.parseError.errorCode != 0) {
var myErr = xmlDoc.parseError;
alert("You have error " + myErr.reason);
} else {
xslProc = xslt.createProcessor();
xslProc.input = xmlDoc;
xslProc.addParameter("param1", "Hello");
xslProc.transform();
alert(xslProc.output);
}
}
}发布于 2013-09-19 10:23:08
您可以考虑撒克逊CE,一个完全用JavaScript实现的XSLT2.0处理器。这将为所有浏览器提供一致的API,并允许您使用更强大的XSLT2.0语言而不是1.0编写代码。
https://stackoverflow.com/questions/18891860
复制相似问题