ivorysmoker: Fehler bei verschieden formatierten Texten (Fortgeschritten)

Beitrag lesen

Ich könnt höchstens vorstellen es liegt an nicht korrekt in sich verschachtelten Tags? Dann könntest du die Tags auseinandernehmen und bei Bedarf mehrfach hintereinander schreiben.
Beispiel:
a b c <x>d e f</x>
soll von b bis d zusätzlich mit <y> markiert werden.
a <y>b c <x>d</y> e f</x> ist ungültig.
Dann mach das draus: a <y>b c</y> <x><y>d</y> e f</x>

Hi Encoder

Leider war die Zeit etwas knap um auf deine Beitrag zu antworten. Vielen Dank erst einmal für deinen Anreiz.

hat meine Funktion ein Problem.
Trotz meiner Vermutung ist es eine sehr sinnvolle Idee das Problem zu verraten.

Wenn ich das genaue Problem wüsste, würde ich dies natürlich schildern. Leider weiss ich das genaue Problem auch nicht. Ich habe nur ein Paar Vermutungen aufgestellt über die Tags sowie vom String, da ich einen ähnlicher Fehler schon hatte.

Soviel ist schon klar:

1. Wenn in einem String der Makiert wurde sich keine Tags befinden funktioniert alles wunderbar. (Auch auf mehrere Zeilen etc..)
1.1 String: Ich bin der Makierte String

2. Wenn der String der Makiert wurde schon einzeln formatierte Worte hat, dann gibs eben dieses unbekannte Problem.
2.1 String: Ich bin formatiert</px> <px>und ich auch! = Fehler!
2.2 Die Tags umwandeln wäre eine sinvolle Idee, leider führt dies zu noch mehr Problemen unten dazu mehr.
2.3 Was ich mir dazu überlegt habe:
Sovern ja keine Tags vorhanden sind funktioniert alles problemlos, der einfachste weg wäre gewesen alle Tags umzuwandeln, befor Sie an die schon bestehende Funktion weitergeleitet wird.
Nur Leider fangen hier ganz viele neue Probleme an, da die Anzeige über Tags gesteuert wird! Es hätte also zur folge das man im Code dan sowas sieht <px69>Ich wäre 69 PX Gross</px69>, statt wie bisher die (69 Grosse PX) schrift.

3. Ursprung des Problemes:
3.1 //Kommentiert

  
var ersteSelRange = sel.getRangeAt(0);  
  
                if (!ersteSelRange.collapsed) {  
  
                    var startContainer = ersteSelRange.startContainer;  
                    var endContainer = ersteSelRange.endContainer;  
  
                if (startContainer == endContainer) {  
  
                    var posStart = ersteSelRange.startOffset;  
                    var posEnd = ersteSelRange.endOffset;  
                     /*alert('StartPosition'+posStart);  
                     alert('EndPosition'+posEnd);*/  
                    var startContainerText = startContainer.textContent;  
  
                    var ersteSelRangeText = ersteSelRange.toString();  
                    //alert('RegEx Ausgabe: 'regexfirst+regexnext);  
  
                    //Hier wird der String zusammengebaut und hier befindet sich auch das Problem denke ich, da ich denke sobald zwischen den Zeilen Tags sind stimmen möglicherweise die Suchpositionen nicht mehr überein oder was ich eher denke das Tags abgewissen werden und es ein reiner Text-String sein muss, also ohne Elemente. Da es jetzt aber sehr wichig ist das diese Tags vorhanden sind und man leider über die Funktion nicht direkt den Container ansteuern/verändern kann, ist eine Lösung für dieses Problem eusserst schwirig...  
  
                    startContainer.textContent = startContainerText.substr(0, posStart) + regexfirst + ersteSelRangeText + regexnext +  
                    startContainerText.substr(posEnd);  
                    //alert("Ist die Komplette Zeile: "+ersteSelRangeText);  
  }  
 }  

Ich hoffe ich konnte es etwas genauer schildern und freue mich auf Rückmeldungen.

Grüsse Ivorysmoker