我正在嘗試使用Javascript將XML文件的一部分轉換爲HTML表格的單個行。我的想法是,我將在多個XML文件的表中創建多行。對於Firefox和Opera來說,這一小部分代碼可以很好地工作。XSL在IE中處理片段
var resTable = document.createElement('table');
for (i = 0; i < xmlNames.length; i++)
{
// code for IE
if (window.ActiveXObject)
{
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
xml=loadXMLDoc(xmlNames[i]);
xsl=loadXMLDoc(xslName);
xsltProcessor=new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
resultDocument = xsltProcessor.transformToFragment(xml,document);
resTable.appendChild(resultDocument);
}
}
document.getElementById("theDoc").appendChild(resTable);
問題是,我已經在「if IE」部分嘗試了一千件東西,而且沒有任何工作。我做了很多Google搜索,在我問之前在這裏瀏覽,但無濟於事。事實上,在SO上有一個沒有答案的問題,聽起來很相似,但沒有迴應,也沒有解決方案,所以我希望有人能夠幫助我在這裏..
我已經成功地獲得整個文檔在IE上進行轉換,但是我想將其作爲一個片段進行轉換,這是造成我的問題的原因。任何幫助都將非常感謝!謝謝!
編輯:對不起,我忘記提供我的loadXMLDoc函數的情況下,重要的。這裏是:
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest();
}
else
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",dname,false);
xhttp.send("");
return xhttp.responseXML;
}
對於你不應該嘗試使用window.ActiveXObject來檢測IE,即使啓用了ActiveX過濾,它也會評估爲true,所以如果你以後嘗試創建一個ActiveX對象,它將會失敗。 – Joey
好的,那麼有沒有建議,然後以另一種方式呢? – daroo
http://blogs.msdn.com/b/ie/archive/2011/05/02/activex-filtering-for-developers.aspx - 你已經爲XHR做了正確的事情。 – Joey