[javascript] 강조 표시 / 선택된 텍스트 가져 오기
jQuery를 사용하여 웹 사이트의 단락에서 강조 표시된 텍스트를 얻을 수 있습니까?
답변
사용자가 선택한 텍스트를 얻는 것은 비교적 간단합니다. window
및 document
객체 외에 다른 것이 필요하지 않기 때문에 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)