1

所以我有一個AJAX調用,它返回一個完整的XHTML文檔。在IE中,當我從ajax.responseXML獲取XMLDocument時,body元素的所有屬性都丟失了。創建一個新的DOMParser並重新解析ajax.responseText給出了相同的結果。在FF或Chrome中沒有問題。IE11 JS XMLHTTPRequest/XMLParser丟棄<body>屬性

使用以下解決方法現在:

var x; 
var body = xmldoc.getElementById('body'); 

if (!body) { //WTF?? IE loses the body's attributes 0.o 
    body = xmldoc.getElementsByTagName('body')[0]; 
    var str = this.ajax.responseText; 
    var par = new DOMParser(); 
    var tmpdoc; 
    var attr; 
    str = str.substr(str.indexOf('<body')); 
    str = str.substr(0, str.indexOf('>') + 1); 
    str += "</body>"; 
    tmpdoc = par.parseFromString(str, "text/xml"); 
    attr = tmpdoc.documentElement.attributes; 
    for (x = 0; x < attr.length; x++) 
     body.setAttribute(attr.item(x).name, attr.item(x).value); 
} 

這是超級哈克不過,任何人都知道一個更好的辦法?

+1

FWIW一個解釋,這個問題用兼容模式時消失:IE8。 –

回答