Ich habe eine Markierungsschaltfläche auf der Benutzeroberfläche, auf die geklickt wird. Jede Benutzerauswahl wird rot markiert. Keine Probleme hier. Ich erreiche das durchdocument.execCommand("insertHTML")
Ich habe jedoch eine zusätzliche Anforderung, dass die rote Markierung der alten Auswahl verschwinden sollte, wenn die neue Auswahl erstellt wird, die den Schnittpunkt der alten Auswahlmarkierungen darstellt.
Als Beispiel:
Im folgenden Bild: Dies und Testen sind markiert. Nun , wenn ich wähle sein tes ist von Anfang an und Markierung klicken, alte Markierungen von diesem und Tests sollen weggehen und nur sein tes markiert werden soll , weil es ein Schnittpunkt ist.
Code:
const button = document.getElementById("button");
button.addEventListener('click', ()=>{
const s = window.getSelection();
const selectionStr = s.toString();
document.execCommand("insertHTML", false, `<span class="bg-red">${selectionStr}<span>`);
})
.bg-red {
background: red;
}
<div contenteditable="true">
this is testing this is testing this is testing
</div>
<button id="button">mark</button>
quelle