Hallo,
das wird schwierig. Ich hab auch nur einen Ansatz im Kopf:
getSelection gibt ein Selection-Objekt zurück
http://developer.mozilla.org/en/docs/DOM:window.getSelection
http://developer.mozilla.org/en/docs/DOM:Selection
Da hast du Zugriff auf die betroffenen DOM-Knoten und kannst dir eine Range der Auswahl geben lassen
http://developer.mozilla.org/en/docs/DOM:Selection:getRangeAt
http://developer.mozilla.org/en/docs/DOM:range
Mit der Range hast du Zugriff auf Anfangs- und Endknoten. Um alle Knoten dazwischen zu bekommen, müsste man sich wohl von Hand im DOM-Baum herumhangeln. Und wenn man quasi innerHTML der Range will, zusätzlich serialisieren (jeweils mit innerHTML und dann zusammenfrickeln).
Ich weiß nicht, ob das weiterhilft, aber mit der Range kann man auch ein ein Dokument-Fragment erstellen
http://developer.mozilla.org/en/docs/DOM:range.createContextualFragment
Das muss man dann aber immer noch auf die beschriebene Art durchlaufen, es ist nur einfacher, weil es sich wie ein DOM-Knoten verhält (childNodes und so soweit ich weiß).
Mathias