我正在尝试将样式应用于用户选择的文本(鼠标拖动),我需要获取所选文本的开始和结束索引。
我试过使用“indexOf(...)”方法。但它返回所选子字符串的第一次出现。我想要子字符串相对于原始字符串的实际位置。例如..,如果我在位置 3 [ YOL O Cobe]处选择字母“O” ,我希望索引为 3,但 indexOf() 方法返回 1,这是 [Y O LO ] 中第一次出现的“O”科比]。
有没有其他方法可以获取所选文本的实际开始和结束索引而不是第一次出现?
function getSelectionText()
{
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
}
return text;
}
document.getElementById('ip').addEventListener('mouseup',function(e)
{
var txt=this.innerText;
console.log(txt);
var selectedText = getSelectionText();
console.log(selectedText);
var start = txt.indexOf(selectedText);
var end = start + selectedText.length;
if (start >= 0 && end >= 0){
console.log("start: " + start);
console.log("end: " + end);
}
});Run Code Online (Sandbox Code Playgroud)
<div id="ip">YOLO Cobe</div>Run Code Online (Sandbox Code Playgroud)