我正在尝试使用 window.getSelection.getRangeAt(0)获取所选文本 这是我的代码:
<!DOCTYPE html>
<html>
<head>
<script>
function Selected(){
var range = window.getSelection().getRangeAt(0);
alert(range);
content = range.cloneContents();
var select = content.querySelectorAll('span');
alert(select.length);
}
</script>
</head>
<body >
<span style="font-size:45px" onmouseup="Selected()" id="idNo1">This is some text</span>
</body>
</html>
警告(select.length); 总是0可以有人帮我解决这个问题。谢谢。但范围包含所选文本。
答案 0 :(得分:1)
你不能这样做才能获得所选的字符串长度吗? alert(range)正在执行range.toString()
<!DOCTYPE html>
<html>
<head>
<script>
function Selected(){
var range = window.getSelection().getRangeAt(0);
// to get the text ( it does range.toString() )
alert(range);
// to get the text length
alert(range.toString().length);
// to get the id of the startNode
alert(range.startContainer.parentNode.id);
}
</script>
</head>
<body >
<span style="font-size:45px" onmouseup="Selected()" id="idNo1">This is some text</span>
</body>
</html>
答案 1 :(得分:0)
答案和一些有用的相关信息:
选定的文本:
window.getSelection().toString();//pa'rtially selected tex't.
window.getSelection().toString().length;//20, length of the selected text.
锚节点中的文本(其中文本的初始拖动是开始的,可以在左侧的或右侧:< / p>
window.getSelection().anchorNode;//Node text, NOT selection text.
window.getSelection().anchorNode.length;//Length of node's text, not selection.
焦点节点(最初拖动文本为 的地方)中的文本可以位于左侧的或右侧:< / p>
window.getSelection().focusNode;//Node text, NOT selection text.
window.getSelection().focusNode.length;//Length of node's text, not selection.
所选文本的共同祖先(实际上是parentNode
)
window.getSelection().getRangeAt(0).commonAncestorContainer
删除所选文本:
window.getSelection().deleteFromDocument();