Les clones DOM Range ne sont pas à l'abri des changements DOM

Je fais un clone d'une gamme DOM en utilisant la fonction cloneRange (). Si je modifie l'objet de la gamme d'origine comme ceci:

range.setStart(range.startContainer, 1); 

Le clone conserve l'ancien startOffset comme prévu.

Cependant, si je modifie l'arborescence DOM, le startOffset du clone sera également affecté. Existe-t-il un câblage interne intentionnel entre l'arbre DOM et toutes les plages qui lui sont associées (clones inclus)?

JS Fiddle Exemple

Oui il y a. Ce qui arrive aux gammes sous la mutation DOM est spécifié dans la spécification DOM Level 2 Range . La spécification DOM4 Range plus récente le spécifie dans la section des algorithmes de mutation (grâce à RobG pour le souligner).