我在项目中遇到了一个问题,其中XML节点的值在IE11中作为undefined
返回,而在所有其他浏览器(包括Edge)中返回它们作为预期的有效值。
要获取我使用.innerHTML
的值,经过一些研究,我发现.innerHTML
在IE11中不起作用,从技术上讲它不应该用于阅读首先是XML节点值。
我找到了一些对我来说都很讨厌的解决方案,因为他们建议使用不同的方法来读取不同浏览器的XML数据(也就是IE11和其他所有内容)。我认为必须有一种标准的方法来读取适用于所有浏览器的XML数据,因为解析XML非常常见,而不是在不同浏览器中有不同实现的模糊实践。
我终于找到了一个视频,其中一个人使用.firstChild.data
来解释读取XML节点值。我已经在我的项目中实现了它,它似乎在所有浏览器中都能正常工作。这是我遇到这种方法的唯一时间。我使用.text()
,.innerHTML
或.textContent
(对于IE11)看了我建议的其他地方。
是否有理由不使用.firstChild.data
或不使用其他方法,是否有其他更适合跨浏览器兼容的方法?
答案 0 :(得分:1)
如果firstChild
是text node
,那么您希望使用nodeValue
来访问其文本内容。另请参阅textContent
属性。
但是,firstChild
可能不是文本节点,具体取决于您的数据。例如,给定这个XML文档...
<root><a><b>foo</b> bar</a></root>
... firstChild
元素的<a>
是Element
,文本节点为子节点。因此,您不希望使用firstChild
来查找文本节点。
此外,data
特定于CharacterData
接口。如果您确定自己拥有Text
节点,则可以使用此属性。否则,我个人会使用Node
本身的接口,直到你知道你有什么类型的节点。