Today I Learend
선택된 문자열에 하이라이트 하기
<ul class="generic-list">
<li class="item">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nam vero.</li>
<li class="item">Laboriosam quaerat sapiente minima nam minus similique illum architecto et!</li>
<li class="item">Incidunt vitae quae facere ducimus nostrum aliquid dolorum veritatis dicta!</li>
<li class="item">Tenetur laborum quod cum excepturi recusandae porro sint quas soluta!</li>
</ul>
예를 들어 위와 같은 텍스트가 있을 때 각 li들의 첫 단어를 드래그해서 offset을 체크해보면 모두 0부터 시작한다.
이걸 구분 지어야 나중에 백엔드에서 정확히 하이라이트 된 텍스트를 가져올 수 있다.
하이라이트 하는 것은 드래그한 selection에 style만 주면 된다.
document.addEventListener("mouseup", (event) => {
if (window.getSelection().toString().length) {
// -- 1 -- //
let selection = window.getSelection();
let exactText = selection.toString();
// -- 2 -- //
let span = document.createElement("SPAN");
span.textContent = exactText;
// -- 3 -- //
let range = selection.getRangeAt(0);
range.deleteContents();
range.insertNode(span);
}
});
참고: https://stackoverflow.com/a/24691115/14058876
방법은 이렇다:
이 방법의 문제점은:
그래서 그 텍스트는 어떻게 구분할 것이며 구분했으면
구분한 "키"를 어떻게 입력/보관/출력 할건지 잘 생각해서 구현해야함.