Document: moveBefore() メソッド
利用可能性は限定的
この機能はベースラインではありません。最も広く使用されているブラウザーの一部で動作しません。
Want more browser support for this feature? Tell us why.
moveBefore() は Document インターフェイスのメソッドで、指定された Node を DOM ノード Document 内の直接の子として、指定された参照ノードの前に移動します。
構文
moveBefore(movedNode, referenceNode)
引数
movedNode-
移動するノードを表す
Node。なお、これはElementまたはCharacterDataノードでなければなりません。 referenceNode-
Nodeであり、movedNodeの移動先はこの前になります。またはnullです。この値がnullであった場合、movedNodeはDocumentの子要素の末尾に挿入されます。
返値
なし (undefined)。
例外
HierarchyRequestErrorTypeError-
以下のいずれかの場面で発生します。
- 指定された
movedNodeがこの文書に属していない。 - 指定された
movedNodeはElementまたはCharacterDataノードではない。 movedNodeをこの文書の doctype (DocumentTypeオブジェクトで表される)の前に移動しようとした。
- 指定された
NotFoundErrorTypeError-
指定された
referenceNodeは、moveBefore()を呼び出したノードの子ノードではない。つまり、movedNodeの移動先ノードの子ノードではない。 TypeErrorTypeError-
2 つ目の引数が指定されていない。
解説
moveBefore() メソッドは、指定されたノードをこの DOM 内の新しい場所に移動します。これは Node.insertBefore() メソッドと同様の機能を提供しますが、ノードを除去せずに、再挿入される点が異なります。つまり、 insertBefore() や類似のメカニズムで移動した場合にリセットされる、次のようなノードの状態が、移動後も保持されます。
- アニメーションやトランジションの状態。
<iframe>の読み込み状態。- 操作の状態(例えば
:focusや:active)。 - 要素の全画面の状態。
- ポップオーバーの開閉状態。
<dialog>要素のモーダル状態(モーダルダイアログは閉じられません)。
<video> および <audio> 要素の再生状態は、以上の一覧には含まれません。これらの要素は、使用される仕組みに関わらず、除去され再挿入された後も状態を保持するからです。
MutationObserver を使用して DOM の変更を監視する場合、moveBefore() で移動されたノードは除去されたノードと追加されたノードとして記録されます。
moveBefore() メソッドは、Document ノードに対して呼び出しても特に有用ではありません。要素以外の用途もいくつかあり、例えば moveBefore() を使用して Document のルート周辺のコメントノードを移動させることが可能です。しかし、個々の