[javascript] 강조 표시 / 선택된 텍스트 가져 오기

jQuery를 사용하여 웹 사이트의 단락에서 강조 표시된 텍스트를 얻을 수 있습니까?



답변

사용자가 선택한 텍스트를 얻는 것은 비교적 간단합니다. windowdocument객체 외에 다른 것이 필요하지 않기 때문에 jQuery를 포함하여 얻을 수있는 이점은 없습니다 .

function getSelectionText() {
    var text = "";
    if (window.getSelection) {
        text = window.getSelection().toString();
    } else if (document.selection && document.selection.type != "Control") {
        text = document.selection.createRange().text;
    }
    return text;
}

선택 <textarea>및 텍스트 <input>요소를 처리하는 구현에 관심이 있다면 다음을 사용할 수 있습니다. 지금은 2016 년 이래로 IE <= 8 지원에 필요한 코드를 생략하고 있지만 SO에 대한 많은 장소에 게시했습니다.

function getSelectionText() {
    var text = "";
    var activeEl = document.activeElement;
    var activeElTagName = activeEl ? activeEl.tagName.toLowerCase() : null;
    if (
      (activeElTagName == "textarea") || (activeElTagName == "input" &&
      /^(?:text|search|password|tel|url)$/i.test(activeEl.type)) &&
      (typeof activeEl.selectionStart == "number")
    ) {
        text = activeEl.value.slice(activeEl.selectionStart, activeEl.selectionEnd);
    } else if (window.getSelection) {
        text = window.getSelection().toString();
    }
    return text;
}

document.onmouseup = document.onkeyup = document.onselectionchange = function() {
  document.getElementById("sel").value = getSelectionText();
};
Selection:
<br>
<textarea id="sel" rows="3" cols="50"></textarea>
<p>Please select some text.</p>
<input value="Some text in a text input">
<br>
<input type="search" value="Some text in a search input">
<br>
<input type="tel" value="4872349749823">
<br>
<textarea>Some text in a textarea</textarea>


답변

이런 식으로 강조 표시된 텍스트를 얻으십시오.

window.getSelection().toString()

그리고 물론 다음과 같은 특별한 치료법이 있습니다 :

document.selection.createRange().htmlText


답변

이 솔루션은 크롬을 사용하고 (다른 브라우저를 확인할 수 없음) 텍스트가 동일한 DOM 요소에있는 경우 작동합니다.

window.getSelection().anchorNode.textContent.substring(
  window.getSelection().extentOffset, 
  window.getSelection().anchorOffset)


답변

사용하십시오 window.getSelection().toString().

developer.mozilla.org에서 자세한 내용을 읽을 수 있습니다.


답변