2016-09-10 9 views
2

DOMツリーの作成方法を読んでいるうちにHTML5 spec: 8.2.1 Overview of the parsing modelという質問が出てきて答えが見つからない。DOM APIはHTML解析にどのように影響しますか?

document.writeを使用した仕様によれば、他の問題とは別に悪いことに、解析を一時停止して新しい文字をトークナイザ入力に供給します。

DOM APIを使用するとどうなるのでしょうか。 appendChild。それはいつ実行されますか?

私が理解する限り、これは既に作成されたNodeを追加するので、解析とトークン化は必要ありません。しかし、新しいノードはすぐに、または「最初/元の」DOMツリーを構築した後にアタッチされますか?

答えて

3

DOMには、それが当時の状態ですぐに起こります。 DOMドキュメントは常に一貫性のあるツリーを形成するので、常に安全に追加できます。

要素を追加することは、常にその点でかなり無害ですが、解析中にDOMドキュメントから要素を削除することは、以前のIEバージョンをクラッシュさせるのに適した方法でした。実際、その問題は、IEがIE10でHTML5解析アルゴリズムを実装するまで、ある程度まで続けられました。

+0

ありがとう、あなたはソースへのリンクを提供できますか? – rzymek

+0

いいえ、でも簡単にテストできます。たとえば、このスクリプトをソース ' 'となり、DOMドキュメントの要素数が1つ増え、その後の解析されたマークアップによって要素数がさらに増加することがわかります。 – Alohci

+0

フェアポイント。スクリプトが非同期であるかどうかは不思議です。ただし、JSの実行中にHTML解析が一時停止されるため、変更が遅れることなく反映されることが期待できます。 – rzymek

関連する問題