Hi Christoph,
Das ist ja eigentlich kein Grund einen neuen Thread aufzumachen, der Alte ist ja schließlich noch offen.
Ja, ich schäme mich auch ein ganz klein wenig.
Gestern habe ich aber noch versucht, irgendeinen Algorithmus zu finden - mir kam dann aber selber eine Idee, die auch so ganz toll funktioniert.
Heute brauche ich einfach nur Feedback zu dem fertigen Produkt.
Aber ich kann ja trotzdem mal Dein Dingen gleich hier auseinandernehmen, wofür gibt's schließlich C&P.
Ich fang' mal oben an.
In den Funktionen domIns() und domDel() wird ein Blockelement benutzt dem nachträglich per CSS ein Inlineverhalten aufgepropft wird. Das macht hier wenig Sinn.
Eine andere Methode ist mir dazu nicht eingefallen.
Klar, ich hätte eine Klasse definieren können und dann den Klassennamen setzen können, aber das ist für meinen Geschmack nur genauso gut.
Auf ein Attribut zuzugreifen ohne es erstellt zu haben ist nicht sonderlich abwärtskompatibel.
Wozu die Abfrage "if (parent != undefined)" und dazu noch ohne ein "else"?
Wer Aah sagt muß auch Beh sagen: zu "color" gehört stets auch ein "background-color".
Parent ist ein optionaler Parameter.
Wenn man ihn weglässt, dann kann man per AppendChild den erzeugten Knoten anhängen.
Warum benutzt Du die Funktion domText() nicht überall?
Die Funktion replaceAll() ist normalerweise unnötig.
Die Behandlung der Zeilenenden ebenfalls.
innerHtml ist kein Javascript sondern JScript.
zu replaceAll habe ich keine Alternative gefunden.
innerHTML ist einfacher (und auch browserübergreifend).
Klar könnte ich den ganzen Text mit DOM zusammenbasteln, aber das wäre dann etwas langatmig geworden.
removeAllChildren() geht auch eleganter.
wie ?
denn der Algorithmus frisst nämlich viel Zeit !!!
Der Rest ist _sehr_ umständlich gelöst und im Grunde auch keine Lösung für Dein im Originalthread beschriebenes Problem. Hatte das einen bestimmten Grund?
Ja und Nein,
ich war gestern lange in der Wikipedia unterwegs und habe mir angeschaut, wie die das Versionsproblem gerade bei konkurrierenden Versionen lösen.
Und wird dort das Problem nicht gelöst, man kann immer nur auf den neuesten Artikel aufsetzen, aber alle Artikel gegeneinander vergleichen.
Damit haben meine Bedenken gegenüber einem Auseinanderdriften in verschiedene Versionen etwas abgenommen - auch ich werde nur zulassen, daß man auf der neuesten Version arbeitet.
Was bei meinem Algorithmus mir wichtig ist, daß er sich durch einen komplett umgestellten Text sich nicht aus der Fassung bringen lässt i.e. Selbst wenn man einen Absatz an eine ganz andere Stelle kopiert und dann dort was einfügt, erkennt er die eingefügte Änderung.
Auch was das mutwillige Zerstören von Artikeln angeht habe ich sowas wie einen Maßstab gefunden: die Anzahl der 'Ankerpunkte' von Version zu Version.
Diese Anzahl ändert sich nicht wesentlich bei Korrekturen oder Ergänzungen, sie ändert sich aber wesentlich bei einem ganz anderen Text oder bei einer Löschung.
Somit habe ich auch dort meine Alarmglocke.
videntur,
Mathias