molily: range / documentFragment / nodeIterator

Beitrag lesen

Hallo,

Ich verstehe ehrlich gesagt deinen Ansatz nicht.

Wenn du *eine* Range abfragst mit getRangeAt(0), bekommst du immer nur eine Range, die *eine* Teilmarkierung wiedergibt. Das entspricht einem String. Das DocumentFragment, das cloneContents() zurückgibt, hat daher auch immer nur einen Kindknoten, das ist ein Textknoten. Warum willst du da mit einem NodeIterator arbeiten? Da gibt es doch nichts zu iterieren... ;)

Suchst du vielleicht eher das hier? Willst du alle Markierungen im Dokument?

<script type="application/javascript;version=1.7">  
[code lang=javascript]function getSelectedTexts () {  
 var selection = window.getSelection();  
 if (!selection || selection.isCollapsed) return;  
 var text_parts = [];  
 for (let i = 0, l = selection.rangeCount; i < l; i++) {  
  text_parts.push(selection.getRangeAt(i).cloneContents().childNodes[0].data);  
 }  
 return text_parts;  
}

</script>[/code]

Wenn mit Strg mehrere Texte markieren werden, gibt das alle Strings zurück.

Mathias