treewalker: range / documentFragment / nodeIterator

Beitrag lesen

Hallo Forum,

ist es möglich, auf die Nodes eines range-Objekts, bzw. eines documentFragments mit Hilfe des nodeIterators zuzugreifen?

Ich möchte die Textdaten einer Selektion manipulieren, was ja mit rekursivem Zugriff auf die DOM-Struktur ginge, mit dem nodeIterator aber viel schöner wäre.
toString() reicht nicht aus, da ich die Textbausteine hinterher wieder ihren Nodes zuordnen möchte.
Das Ganze ist für eine Firefox-Erweiterung gedacht, es ist also schon super, wenn es nur auf Mozilla funktioniert.

Mein bisheriger Ansatz:

  
function test() {  
 var selection = window.getSelection();  
 if (selection && !selection.isCollapsed) {  
  var text_parts = new Array;  
  var range = selection.getRangeAt(0);  
  var clone = range.cloneRange();  
  
  // content sollte nun ein Objekt vom Typ „documentFragment“ enthalten.  
  var content = clone.cloneContents();  
  
  // Der iterator nimmt content nicht.  
  var iterator = document.createNodeIterator(content, NodeFilter.SHOW_ELEMENT, null, false);  
  var node;  
  while((node = iterator.nextNode()) != null) {  
   text_parts.push(node.data);  
  }  
  return text_parts;  
 }  
}  

Geht so etwas überhaupt?
Ich hoffe, ihr könnt mir helfen.

Alles Gute & vielen Dank schon mal

treewalker