Mit folgendem Code verändere ich den Inhalt einer Selektion aus einem Div-Container. Ich habe das mit surroundContents gelöst, da ich das Ganze nur so ans Laufen bringen konnte...
Soweit so gut.
Allerdings gibt es Schwierigkeiten, sobald ich eine Text selektiere, der nicht vollständig mit Tags eingefasst ist:
Markiere ich nun "ein fett" gibt es einen "InvalidStateError". Das hat - wenn ich das richtig verstanden habe - mit surroundContents() zu tun, welches immer einen vollständigen Tag benötigt.
Jetzt soll in meinem Beispiel hier aus dem markierten Bereich das <b> entfernt werden und an den Anfang der Selektion gesetzt werden, damit die fett-Markierung erweitert wird, so dass am Ende folgendes daraus wird:
Entsprechendes natürlich wenn "markierter Text" ausgewählt wird...
Code:
var range = window.getSelection().getRangeAt(0).cloneRange();
var container = document.createElement("mark");
range.surroundContents(container);
html = container.innerHTML;
$("mark").replaceWith('<b>' + html + '</b>');
Soweit so gut.
Allerdings gibt es Schwierigkeiten, sobald ich eine Text selektiere, der nicht vollständig mit Tags eingefasst ist:
HTML:
<b>Irgendein</b> Inhalt und ein <b>fett markierter</b> Text
Markiere ich nun "ein fett" gibt es einen "InvalidStateError". Das hat - wenn ich das richtig verstanden habe - mit surroundContents() zu tun, welches immer einen vollständigen Tag benötigt.
Jetzt soll in meinem Beispiel hier aus dem markierten Bereich das <b> entfernt werden und an den Anfang der Selektion gesetzt werden, damit die fett-Markierung erweitert wird, so dass am Ende folgendes daraus wird:
HTML:
<b>Irgendein</b> Inhalt und <b>ein fett markierter</b> Text
Entsprechendes natürlich wenn "markierter Text" ausgewählt wird...