【发布时间】:2014-04-08 07:42:56
【问题描述】:
所以我有一个 AJAX 调用,它返回一个完整的 XHTML 文档。在 IE 中,当我从 ajax.responseXML 获取 XMLDocument 时,body 元素上的所有属性都丢失了。创建一个新的 DOMParser 并重新解析 ajax.responseText 会得到相同的结果。在 FF 或 Chrome 中没有问题。
暂时使用以下解决方法:
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);
}
不过这太hacky了,有人知道更好的方法吗?
【问题讨论】:
-
FWIW,使用兼容模式时问题消失:IE8。
标签: javascript ajax internet-explorer xmlhttprequest internet-explorer-11