J'ai un bouton de marque sur l'interface utilisateur, en cliquant sur lequel, toute sélection d'utilisateur est marquée en rouge. Aucun problème ici. J'y parviens endocument.execCommand("insertHTML")
Mais j'ai une exigence supplémentaire que si la nouvelle sélection est créée qui est l'intersection des anciennes marques de sélections, la marque rouge de l'ancienne sélection devrait disparaître.
Par exemple:
Dans l'image suivante: ceci et testing sont marqués. Maintenant, si je sélectionne ses is tes depuis le début et que je clique sur la marque, les anciennes marques de ceci et les tests devraient disparaître et seuls ses is tes devraient être marqués car il y a une intersection.
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>
la source