static

live (DOM)

[5] オブジェクトlive である (生きている) とは、その操作の対象となるデータが DOM の変化に伴い随時変化することをいいます。静的 (static) であるとは、 live ではなく、特定の時点でのスナップショットを対象とすることをいいます。

仕様書

定義

[7] オブジェクトlive であるなら、ある時点でのスナップショットではなく、 実際の裏のデータを操作しなければなりません >>13, >>3

[14] HTML Standard は任意のDOM オブジェクトに対して「live」 を定義しています。 DOM Standardコレクションについて「live」と「static」 を定義しています。

[6] コレクションは、 live または静的のいずれかです >>3, >>4。 仕様上明記されていない限り live です >>3

[10] read only arraylive の時も、同様に実際のデータを反映させなければなりません >>9

[8] 例えば、

list = document.getElementsByTagName ('p');
console.log (list.length);
document.body.appendChild (document.createElement ('p'));
console.log (list.length);
... で表示される length は、1回目より2回目の方が1大きな値となります。

live なオブジェクトの一覧

[11] live なオブジェクトには次のものがあります。これらは対象となる DOMCSSOM媒体DnD 対象データに変更が加わると、即座にその変更が反映されるものです。

[12] 定義上は live とはされていませんが、 Range, DOMStringMap, DOMTokenList, DOMSettableTokenList も対象となるへの変更がリアルタイムで反映されます。

[15] canvas に関わる次の2つのオブジェクトlive とされていますが、これらのオブジェクトへの変更が canvas 側に反映されることを意味しています。

[16] 画像写像live とされていますが、スクリプトから直接アクセスできない内部状態なので、 他のものとは性質が違います。 (表モデル文書アウトラインなども同様に live と呼んでも良さそうなものですが、仕様書上 live とは明記されていません。)

live でないもの

[19] DOM 上のほとんどのものは live で、最新の情報が反映されます。 live でないものは例外的です。

[22] DOM APIStringDate の値を返す場合、スナップショットです。

[18] XPathResultlive でも静的でもなく、 文書木が変更されると無効状態になります。

[20] navigator.plugins/navigator.mimeTypes API は、 refresh メソッドで明示的に更新しない限り、 変更されません。

[21] querySelectorAll は、スナップショットを返します。

歴史

関連

[17] あるオブジェクトに付随する部分オブジェクトとみなせるような場合には、 live とは呼ばれないようです。例えば canvas 要素に対する CanvasRenderingContext2dlive であるとはいわれていません。 Window に対する Screen や、 XMLHttpRequest に対する XMLHttpRequestUploadlive とはいわれていません。

[23] [cssom-view] Change "static DOMRect" to note saying "not live" (zcorpan著, ) <https://github.com/w3c/csswg-drafts/commit/1100ce0bb74ccdd88ebfe765775ca8a4bb25451c>

[24] More intuitive names for selector performance profiles · Issue #1694 · w3c/csswg-drafts () <https://github.com/w3c/csswg-drafts/issues/1694>