【问题标题】:IE11 JS XMLHTTPRequest/XMLParser discards <body> attributesIE11 JS XMLHTTPRequest/XMLParser 丢弃 <body> 属性
【发布时间】: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


【解决方案1】:

IE11在同一个域的AJAX XMLhttpRequest有一些问题,特别是在本地主机上,Internet Explorer 11 does not add the Origin header on a CORS request?有解释

【讨论】:

  • 这不是 XMLHTTPRequest 本身的问题,而是它/DOMParser 解析响应 XML 的方式的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-27
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多