我有一个包含内联SVG的html文档,其中包含一些<foreignObject>
个。这些都有自己的<body>
标记。
现在我想找到顶部的<body>
。
一个简单的解决方案是
document.getElementsByTagName("body")[0]
但是这似乎是效率低下的(因为它会先选择所有的主体,然后除掉第一个之外的所有主体)并且我不确定它是否真的可靠(这样的集合中的排序是否实际定义或者可能是这样的变化与其他/较新的浏览器?)
可以看到另一种有效且可靠的方法吗?
答案 0 :(得分:3)
尽管body
元素中可能存在foreignObject
个元素,但您的HTML文档实际上并没有您在标题中提到的多个实体。
您的HTML文档仍然只有一个正文,它自己的body
元素,其中foreignObject
个元素是后代。这是始终由document.body
表示。
答案 1 :(得分:1)
根据文档,getElementsByTagName
:
返回具有给定标记名称的所有Elements的NodeList,按照在文档树的前序遍历中遇到它们的顺序。
那么,“是实际定义的这样一个集合中的排序吗?”。是的,它按照它们在树结构中出现的顺序返回元素。
参考:https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#method-getElementsByTagName
答案 2 :(得分:0)
您可以使用返回document.body
元素的<body>
元素。
如果您需要<html>
元素,则可以使用documenut.documentElement