iterator collection

NodeIterator インターフェイス (DOM)

[7] NodeIterator オブジェクトは、 DOM木上の節点木順または逆木順探索するイテレーターです。

仕様書

文脈

[16] NodeIterator文書環境に(のみ)晒されます。

[20] NodeIteratorcreateNodeIterator メソッドにより作成することができます。コンストラクターから作成することはできません。

状態

[13] NodeIterator オブジェクトは次の状態を持ちます。

NodeIterator の状態
イテレーターコレクション
>>8
whatToShow
フィルター
参照節点
pointerBeforeReferenceNode
活性フラグ
[14] whatToShowフィルターイテレーターコレクション自身はオブジェクトの作成の時点で決定され、 変化しません。それ以外のものや、イテレーターコレクションが表すものは変化することがあります。

メンバー

[15] NodeIterator オブジェクトは次のメソッドIDL属性を持ちます >>6

イテレーターコレクション

[8] NodeIterator の動作は、 仕様書上イテレーターコレクション (iterator collection) >>6 によって説明されています。必ずしもこの通りに実装しなければならないわけではありませんが、 スクリプトから区別できない同等な動作を実装しなければなりません。

[9] イテレーターコレクションは、 NodeIteratorとし、すべての節点一致するフィルターを持つコレクションです >>6。このコレクションlive です。コレクション内の節点木順整列しています。

[18] イテレーターコレクションフィルターは、NodeIteratorフィルターとは異なります。

[19] 他の多くのコレクションとは違って、要素以外の節点が含まれることもあります。

[17] コレクション内に含まれます。

[10] previousNode, nextNodeメソッドは、イテレーターコレクション上で参照節点の前後にある節点へと参照節点を移動し、 新しい参照節点を返すメソッドと説明されています。

この時には NodeIteratorフィルターwhatToShow が適用されるので、 イテレーターコレクション上の2つ以上前後の節点に移動するかもしれません。

[11] 参照節点が削除されて部分木からなくなった場合には、 イテレーターコレクション上の前後 (pointerBeforeReferenceNodeなら前、なら後) の節点へと参照節点が移動します。

[12] イテレーターコレクションlive ですから、 DOM木の変更が即座に反映されます。 従って、DOM木からの削除は即座に参照節点を変更させることとなります。

[21] NodeIterator は、が属する文書に所属するものと考えることもできます。 その場合、adopt されて所属する文書が変わることがあります。

歴史

[5] Index of /tests/adhoc/dom/traversal/node-iterator ( ( 版)) <http://hixie.ch/tests/adhoc/dom/traversal/node-iterator/>

[1] Firefox 3.1 for developers - MDC ( 版) <https://developer.mozilla.org/ja/Firefox_3.1_for_developers#.E6.96.B0.E3.81.97.E3.81.8F.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E6.A9.9F.E8.83.BD_2>

NodeIterator オブジェクト API

[4] Bug 3492 – TreeWalker implementation needs to be fixed (affects Acid3) ( ( 版)) <https://bugs.webkit.org/show_bug.cgi?id=3492>

メモ

[2] Introduction to DOM Traversal - DOM ECMAScripting ( ( 版)) <http://domes.lingua.heliohost.org/dom/intro-traversal1.html>

[3] NodeIterator って誰が使ってるんだろう???? ぐぐってもでてくるのは javadoc ばかりだし・・・。

[22] Fix NodeIterator removing step · whatwg/dom@c97daed ( 版) <https://github.com/whatwg/dom/commit/c97daedbe0da3b4e59d103226af74bb5a4231460>

[23] Fix NodeIterator removing step. Closes #27 · whatwg/dom@248d4fe ( 版) <https://github.com/whatwg/dom/commit/248d4fe2732ef4e37b186127948c0c50b2c9259b>

[24] Editorial: flip non-null/otherwise conditions · whatwg/dom@8d281a3 ( 版) <https://github.com/whatwg/dom/commit/8d281a354690abfda5ff558c461747f304f11788>

[25] ある部分木の節点を順番に訪問して、テキストを拾いつつ特定の要素の前後に区切り文字を入れたものを得たい、 みたいなありがちなシチュエーションで、 使えそうで使えないんですよねぇ... (の順またはその逆順のどちらかなので、 子孫の後に区切りを挟む、というのができない。)

[26] Reinstate active flag for iterators (ayg著, ) <https://github.com/whatwg/dom/commit/6a796cc7676263c30550abfd7cc248300d006b2d>

[27] Also unset the active flag when an exception is thrown (annevk著, ) <https://github.com/whatwg/dom/commit/48c4b4aa0d1b4044b7be62d3a75aaab94058161f>

[28] Editorial: fix several issues with traversal (annevk著, ) <https://github.com/whatwg/dom/commit/a6d17ae5e762d5261a9ca2e6e742cb792fa06e09>

[29] Editorial: fix several issues with traversal by annevk · Pull Request #594 · whatwg/dom () <https://github.com/whatwg/dom/pull/594>

[30] NodeIterator's pre-removing steps need to account for node being root (annevk著, ) <https://github.com/whatwg/dom/commit/c80e0176d9565d2832ae3d535414faff7f6e7dda>

[31] NodeIterator pre-removing steps seem incorrect · Issue #496 · whatwg/dom () <https://github.com/whatwg/dom/issues/496>

[32] NodeIterator's pre-removing steps need to account for node being root by annevk · Pull Request #615 · whatwg/dom () <https://github.com/whatwg/dom/pull/615>