以下は、標準のNode.contains DOM APIを使用して要素が現在 DOM にあるかどうかを確認する簡単な方法です。
document.body.contains(MY_ElEMENT);
CROSS-BROWSER NOTE : IE のドキュメント オブジェクトにはメソッドがありません。contains()
クロス ブラウザーの互換性を確保するには、document.body.contains()
代わりに使用してください。(または、リンク、スクリプトなどの要素をチェックしている場合は document.head.contains )
document
特定の参照とノードレベルの使用に関する注意ownerDocument
:
MY_ELEMENT.ownerDocument.contains(MY_ELEMENT)
ドキュメント内のノードの存在をチェックするためにを使用するというアイデアを誰かが提起しました。これにより意図した結果が得られる可能性がありますが (ただし、99% のケースで必要以上に冗長になります)、ユースケースによっては予期しない結果が生じる可能性もあります。その理由について話しましょう。
document.implementation.createHTMLDocument()
、<iframe>
ドキュメント、または HTML インポート ドキュメントで生成されたドキュメントなど、別のドキュメントに現在存在するノードを処理している場合、ノードのownerDocument
プロパティを使用して、視覚的にレンダリングされたメインになると思わdocument
れるものの存在を確認します。あなたは傷の世界にいるでしょう。
ノード プロパティは、ノードが存在する現在のドキュメントownerDocument
への単なるポインタです。 のほとんどすべてのユース ケースには、ノードの存在を特定するためのチェックが含まれます。チェックしたいドキュメントと同じであるという保証はありません - それはあなただけが知っています。危険なのは、誰かが他のドキュメントに存在するノードを参照、インポート、または生成する方法をいくつでも導入する可能性があることです。その場合、 の相対的な推論に依存するようにコードを記述した場合、コードが壊れる可能性があります。コードが常に期待どおりの結果を生成するようにするには、 のような相対的な推論を信頼するのではなく、チェックしようとしている具体的に参照されているものとのみ比較する必要があります。contains
document
ownerDocument
ownerDocument
ownerDocument
document
ownerDocument