XSLT仅适用于Firefox

时间:2014-05-05 03:19:33

标签: javascript xslt

我是XSLT的新手。我从PHP的ECHO返回值获取XML文件。

然后我尝试转换为XSL,但它只适用于Firefox。

当我从Chrome运行Javascript调试器时,它说 :

  

未捕获TypeError:undefined不是函数maintenance.js:30   的getData

[补充:OP最终注意到maintenance.js第30行显示:

function generateReport() { 
  xHRObject.open("GET", "getXML.php", rue); 
  xHRObject.onreadystatechange = getData; //this is where i get debug error in chrome
  xHRObject.send(null); 
} 

为了便于辨认,我将其分为多行。]

但是当我在Firefox中使用相同的代码运行firebug没有错误并且可以得到我想要的结果。

var xhr = false;
if (window.XMLHttpRequest)
{
  xhr = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
  xhr = new ActiveXObject("Microsoft.XMLHTTP");
}

function getData()
{
    if ((xhr.readyState == 4) &&(xhr.status == 200))
    {
        if (window.ActiveXObject)
        { 
            var xml = xhr.responseXML;
            var xsl = new ActiveXObject("Microsoft.XMLDOM");
            xsl.async = false; xsl.load("abc.xsl");
            var transform = xml.transformNode(xsl);
            var frame = document.getElementById("frame");
            frame.innerHTML = transform;
        }

        else
        {
             var xsltProcessor = new XSLTProcessor();
              xslStylesheet = document.implementation.createDocument("", "doc", null);
              xslStylesheet.async = false;
              xslStylesheet.load("abc.xsl"); 
              xsltProcessor.importStylesheet(xslStylesheet);
              xmlDoc = xhr.responseXML;
              var fragment = xsltProcessor.transformToFragment(xmlDoc, document);
              document.getElementById("frame").innerHTML = new XMLSerializer().serializeToString(fragment);

        }
    }
}

function test()
{
  xhr.open("GET", "getXML.php", true);    
  xhr.onreadystatechange = data;
  xhr.send(null);
}

0 个答案:

没有答案