3

cloneRange() 関数を使用して DOM Range のクローンを作成しています。次に、元の範囲オブジェクトを次のように変更すると:

range.setStart(range.startContainer, 1);

クローンstartOffsetは期待どおりに古いものを保持します。

ただし、DOM ツリーを変更すると、クローンstartOffsetも影響を受けます。DOM ツリーとそれに関連付けられているすべての範囲 (クローンを含む) の間に意図的な内部配線はありますか?

JS フィドルの例

4

1 に答える 1

2

はいあります。DOMミューテーションの下で範囲に何が起こるかは、DOMレベル2範囲仕様で指定されています。最近のDOM4Range仕様では、ミューテーションアルゴリズムのセクションでこれを指定しています(これを指摘してくれたRobGに感謝します)。

于 2012-07-09T23:54:15.783 に答える