Mam przycisk zaznaczenia w interfejsie użytkownika, kliknięcie którego, każdy wybór użytkownika jest zaznaczony na czerwono. Tutaj nie ma problemów. Osiągam to przezdocument.execCommand("insertHTML")
Mam jednak dodatkowy wymóg, aby po utworzeniu nowego zaznaczenia, który jest przecięciem starych oznaczeń zaznaczeń, czerwone oznaczenie dawnych zaznaczeń powinno zniknąć.
Jako przykład:
Na poniższym obrazku: to i testowanie są zaznaczone. Teraz, jeśli wybiorę jego znak startu i kliknięcia, stare oznaczenia tego i testowania powinny zniknąć, a tylko jego znaki powinny zostać zaznaczone, ponieważ istnieje skrzyżowanie.
kod:
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>
źródło