Lieber Struppi, liebe Forumsgemeinde,
es scheint, dass mein Ansatz mit dem Erhalten der Cursorposition von vorneherein zum Scheitern verurteilt ist, denn ich möchte ja zuerst die Cursorposition "speichern", danach das komplette body.innerHTML der iFrames ersetzen und anschließend die "gespeicherte" Cursorposition zurück schreiben.
Spätestens beim genaueren Studieren von </archiv/2003/7/t53330/#m295347> muss ich aber erkennen, dass die "Cursorposition" eine Textauswahl mit identischem Start- und Endepunkt ist, die sich zwar über das selection-Objekt (Syntax und Implementation ist je nach Browser etwas anders, aber im Prinzip derselbe Mechanismus) erhalten und steuern lässt, die aber an die im HTML-Code hinter dem sichtbaren Text gebundenen Elemente gebunden ist. Ersetze ich nun einfach body.innerHTML, so zerstöre ich sämtliche Referenzen zu den Elementen, auf die sich das selection-Element (und seine Range(s)) eben stützt. Daher kann ich keine Cursorposition "speichern", um sie nach dem Codeupdate wieder anzuwenden.
Das hat mich jetzt drei Tage gekostet das herauszufinden... uff!
Es bleibt mir jetzt nichts anderes übrig, als in den DOM-Baum hinauf (hinab?) zu steigen, um das Element, in dem sich der Cursor befindet, DOM-entsprechend zu ändern (falls nötig), um dann eine neue Cursorposition aufgrund der Kenntnis über das betroffene Element (und seine DOM-Umgebung) zu generieren und anzuwenden. - Mahlzeit!
Damit muss ich auch gründlich meine Code-Update-Funktionalität überdenken... Oh Mann! Das wird ja alles immer komplizierter!!
Freue mich über Anregungen und Hilfestellungen beim Umgang mit selection und range (den Tipps und Tricks-Artikel kenne ich schon)!
Liebe Grüße aus Ellwangen,
Felix Riesterer.