2016-07-05 2 views
0

<foreignObject>を含むインラインSVGを含むhtmlドキュメントがあります。それらはすべて自分の<body>タグを持っています。複数のボディを持つドキュメントの最初のbodyタグを取得

ここでは、トップ<body>を探したいと思います。

(簡単な解決策は

document.getElementsByTagName("body")[0] 

だろうけど(それは最初にすべてのボディを選択し、最初の以外のすべてをドロップしてしまうため)、これは非効率的であると思われると私はそれが本当に信頼できるかどうかなりわからないんだけど実際に定義されたセット内の順序ですか、またはこれは他の/新しいブラウザで変更される可能性がありますか?)

効率的で信頼性の高い方法を他の人に見せてもらえますか?

+1

"これは非効率的であると思われる" - [あなたはそれをベンチマークがありますか?本当に非効率なのですか?](https://en.wikipedia.org/wiki/Program_optimization) – Quentin

+1

document.bodyおそらく? – BoltClock

+0

最初の要素を選択し、その要素の本文を選択します。 – epascarello

答えて

3

foreignObject要素内にbody要素が存在するにもかかわらず、タイトルに暗示されているように、HTML文書には実際に複数の本文がありません。

あなたのHTMLドキュメントには、それ自身のbody要素(そのうちのforeignObject要素が子孫である)が1つのみ存在します。これは、です。は、document.bodyで表されます。

0

<body>要素を返すdocument.body要素を使用できます。 あなたが<html>要素を必要とするならば、documenut.documentElementはドキュメント、getElementsByTagNameによる

1

を使用することができます。

は、彼らがなりた順に与えられたタグ名を持つすべての要素のNodeListをを返します。ドキュメントツリーのあらかじめ辿られたトラバーサルで遭遇した。

したがって、は実際にそのようなセットでの順序付けですか?。はい、ツリー構造に表示されている順序で要素を返します。

参考:https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#method-getElementsByTagName

関連する問題