surroundContents-Fehler bei unvollständigen Tags

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…

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]Irgendein Inhalt und ein fett markierter Text[/HTML]

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 entfernt werden und an den Anfang der Selektion gesetzt werden, damit die fett-Markierung erweitert wird, so dass am Ende folgendes daraus wird:

[HTML]Irgendein Inhalt und ein fett markierter Text[/HTML]

Entsprechendes natürlich wenn „markierter Text“ ausgewählt wird…