从jQuery parseXML标记获取原始数据。 Safari错误

时间:2014-02-13 00:42:37

标签: jquery xml-parsing safari

我遇到以下问题。在来自jQuery get函数的回调中,我有以下代码。

x = $.parseXML(data)
xmlDoc = $(x)
y = xmlDoc.find("message")
msg = y.html()

if msg == "MISSING FILE"
    # do something about the missing file
else
    # xmlDoc IS the document I want.

换句话说,我从服务器上得到了一些东西。如果它是一个带有“message”标签的XML文档,上面写着“MISSING FILE”,那么我就处理它了。如果不是,我正常使用该XML文档。

此代码在Firefox中运行良好。但是在Safari中,在MISSING FILE的情况下,当我尝试使用y.html()时出现以下错误时,jQuery会爆炸:

TypeError: 'undefined' is not an object (evaluating 'n.innerHTML.replace') 

看起来y的值是

[<message>MISSING FILE</message>]

但是Safari上的jQuery无法对其执行.html()。

1 个答案:

答案 0 :(得分:0)

行。感谢来自@AdamMerrifield和@ArunPJohny的提示,我对find()返回的对象的键进行了更多调查。

在Safari上它肯定没有innerHTML。

最终我找到了

x = $($.parseXML(data.toLowerCase())).find('message')[0]
msg = x["textContent"]

诀窍。 [“textContent”]似乎在我的Android平板电脑上的Mac和Chrome上的Linux,Safari和Firefox上的Chromium和Firefox上产生相同的结果。

还需要在IE上进行测试(它可能都会出现可怕的错误)。