jQuery .html()方法的替代方法?
问题描述:
我目前正在使用手机开发单页应用程序。我想要实现的是最初解析XML文件并存储内容以供进一步使用。jQuery .html()方法的替代方法?
目前一切工作正常,但有一个主要的问题:
在我的XML文件中,有一个包含HTML格式文本内容的标签。例如:
<textfield> <h1>Title</h1> Content </textfield>
我目前做的是通过jQuery AJAX调用来加载我的XML文件,然后使用HTML()方法来检索我的文本字段的html:
this.description = $(Obj).find("textfield").html();
在谷歌Chrome,火狐和Android这工作正常。该html存储一个可以稍后添加到我的对象。但是,在Safari上,因此在Iphone设备上,html()不起作用。现在我正在寻找解决方法。我当然不想使用text(),因为我的格式将被忽略。
编辑:我的Ajax调用:
$.ajax({
type: "GET",
url: Controller.baseURL+"/"+name+".xml",
async: false,
timeout:3000,
dataType: "xml",
success: function (data) {
alert("succ");
xml = data;
},
error: function() {
alert('error!');
}
});
也许有人可以帮助我。
在此先感谢
答
搜索了几个小时后,我终于找到了我的答案在这里:
https://stackoverflow.com/a/25789924/3566334
似乎
在IE 9,10和11,Safari 7.0和Opera 12,doc中的节点既没有innerHTML字段也没有xml字段
我按照使用XML Serializer的建议,它的作品就像一个魅力!
答
var parser = new DOMParser();
var parsed = parser.parseFromString(yourXMLStringLoadedViaAjax, 'text/xml');
var textfieldConetent = parsed.querySelector('textfield').innerHTML;
看来它不适合我。如果你看看我的ajax调用,我的xml对象已经是一个dom元素。现在,如果我正在做alert(xml.querySelector('textfield')。innerHTML);它包含Chrome和Firefox上的内容,但在Safari上未定义。 – Dede1989 2014-10-05 12:50:29
嘿,@ Dede1989。你能否检查'parsed.querySelector('textfield')。innerHTML;'与其他节点,而不是'textfield'? – 2014-10-05 17:27:54