获取包含多个实体的文档中的第一个body标记

时间:2016-07-05 11:40:40

标签: javascript svg

我有一个包含内联SVG的html文档,其中包含一些<foreignObject>个。这些都有自己的<body>标记。

现在我想找到顶部的<body>

一个简单的解决方案是

document.getElementsByTagName("body")[0]

但是这似乎是效率低下的(因为它会先选择所有的主体,然后除掉第一个之外的所有主体)并且我不确定它是否真的可靠(这样的集合中的排序是否实际定义或者可能是这样的变化与其他/较新的浏览器?)

可以看到另一种有效且可靠的方法吗?

3 个答案:

答案 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