javascript – 在IE中未定义的outerHTML

前端之家收集整理的这篇文章主要介绍了javascript – 在IE中未定义的outerHTML前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我的代码从Ajax调用获取JSON,该调用包含XML,并通过它读取一些信息.

虽然XML的解析在Chrome中运行良好,但它不在IE中,因为在IE中,outerHTML返回undefined.

我已经经历了几个帖子并尝试了几种可能的解决方案但没有成功.

JavaScript代码是:

$.ajax({
    url: 'getJSONwithXML.do',type:'POST',data:'',dataType: 'json',cache: false
}).done(function(data) {
    var jsonResp = JSON.parse(data.data.respuesta);
    var parser = new DOMParser();
    var xmlDoc = parser.parseFromString(jsonResp,"text/xml");
    var texto = $(xmlDoc).find('texto').prop('outerHTML');
    console.log(texto); // <--- undefined in IE
    $('body').append('

我在jsonResp下得到的xml是:

在Chrome或Fireforx下,texto会返回

这就是我想要的(texto标签中的HTML代码),但在Internet Explorer中我得到了未定义.

我见过textContent属性,但这不是我想要的,因为它不是HTML代码.

有任何想法吗?

最佳答案
Internet Explorer不为XML文档中的节点提供outerHTML属性(也不是innerHTML).您可以使用XMLSerializer(在IE 9中)解决这个问题:

var node = $(xml).find('texto')[0]; // get DOM node
// Try outerHTML. If not available,use XMLSerializer
var texto = node.outerHTML || new XMLSerializer().serializeToString(node);

您会注意到texto字符串可能会获取根节点的xmlns属性.但我不认为这对你使用它的方式很重要.

猜你在找的jQuery相关文章