У мене в інтерфейсі є кнопка позначки , натиснувши яку, будь-який вибір користувача позначений червоним кольором. Тут проблем немає. Я досягаю цього шляхомdocument.execCommand("insertHTML")
Але в мене є додаткова вимога: якщо новий відбір створений, що є перетином старих маркерів вибору, червоне маркування вибору має зникнути.
Як приклад:
На наступному зображенні: це і тестування позначено. Тепер , якщо я вибираю його це тес з самого початку і натисніть знак, старі відмітини цього і тестування повинні піти , і тільки його це тес повинен бути відзначений , тому що є перетин.
код:
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>
