对象不支持 Internet Explorer 10 (Windows 8) 中的属性或方法“transformNode”

2023-11-24

我遇到了一些 JavaScript 问题,这些问题似乎只出现在 Windows 8 上的 Internet Explorer 10 中(IE 7、8 和 9 都工作正常)。我所做工作的基本要点是从 Web 服务获取 XML 和 XSL,然后在 JavaScript 中将它们转换为使用 Sys.Net.XMLDOM 对象在页面上呈现。

XMLDOM = Sys.Net.XMLDOM;

var xsl = // XSL gotten from somewhere else 
var xmlString = // XML gotten from somewhere else as a string...
var xml = new XMLDOM(xmlString);

var content = xml.transformNode(xsl);

当我在 IE 10 中使用上面的代码时,我得到:

对象不支持属性或方法“transformNode”

关于 Internet Explorer 10 为何这样做的任何想法?

EDIT

我也尝试过这个:

xmldoc = new ActiveXObject("Msxml2.DOMDocument"); 
xmldoc.async = false; 
xmldoc.load(xml); 

xsldoc = new ActiveXObject("Msxml2.DOMDocument"); 
xsldoc.async = false; 
xsldoc.load(xsl); 

var content = xmldoc.transformNode(xsldoc);

这适用于所有以前版本的 IE,但在 IE 10 中我得到:

引用未声明的命名空间前缀:“atom”。


IE 9及以上不支持,试试这个功能(网上找到的)

function TransformToHtmlText(xmlDoc, xsltDoc) {
    if (typeof (XSLTProcessor) != "undefined") { // FF, Safari, Chrome etc
        var xsltProcessor = new XSLTProcessor();
        xsltProcessor.importStylesheet(xsltDoc);
        var xmlFragment = xsltProcessor.transformToFragment(xmlDoc, document);
        return GetXmlStringFromXmlDoc(xmlFragment);
    }

    if (typeof (xmlDoc.transformNode) != "undefined") { // IE6, IE7, IE8
        return xmlDoc.transformNode(xsltDoc);
    }
    else {
        try { // IE9 and grater
            if (window.ActiveXObject) {
                var xslt = new ActiveXObject("Msxml2.XSLTemplate");
                var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
                xslDoc.loadXML(xsltDoc.xml);
                xslt.stylesheet = xslDoc;
                var xslProc = xslt.createProcessor();
                xslProc.input = xmlDoc;
                xslProc.transform();
                return xslProc.output;
            }
        }
        catch (e) {
            alert("The type [XSLTProcessor] and the function [XmlDocument.transformNode] are not supported by this browser, can't transform XML document to HTML string!");
            return null;
        }

    }
}
var content = TransformToHtmlText(xml, xsl);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对象不支持 Internet Explorer 10 (Windows 8) 中的属性或方法“transformNode” 的相关文章

随机推荐