
window.getSelection() 是 JavaScript 中的一个方法,用于获取用户在页面上选中的文本内容。它返回一个 Selection 对象,该对象包含了用户选择的文本范围、起始位置、结束位置等信息。通过 window.getSelection(),开发者可以轻松地获取用户选择的文本,并对其进行进一步的处理,例如复制、格式化、分析等。
window.getSelection() 的基本用法window.getSelection() 方法返回一个 Selection 对象,该对象代表了用户在页面上选择的文本范围。Selection 对象提供了多种属性和方法,用于操作和获取选择的详细信息。
const selection = window.getSelection();
通过 selection.toString() 方法,可以获取用户选择的文本内容:
const selectedText = selection.toString();
console.log(selectedText);
Selection 对象的属性和方法Selection 对象提供了多种属性和方法,用于操作和获取选择的详细信息。以下是一些常用的属性和方法:
anchorNode: 返回选择范围的起始节点。anchorOffset: 返回选择范围在起始节点中的偏移量。focusNode: 返回选择范围的结束节点。focusOffset: 返回选择范围在结束节点中的偏移量。isCollapsed: 返回一个布尔值,表示选择范围是否为空(即用户是否只点击了页面而没有选择任何文本)。rangeCount: 返回选择范围中包含的 Range 对象的数量。addRange(range): 将一个 Range 对象添加到选择范围中。collapse(node, offset): 将选择范围折叠到指定节点的指定偏移量处。containsNode(node, partialContainment): 判断指定节点是否在选择范围内。deleteFromDocument(): 从文档中删除选择范围内的内容。extend(node, offset): 将选择范围的结束位置扩展到指定节点的指定偏移量处。getRangeAt(index): 返回选择范围中指定索引处的 Range 对象。removeAllRanges(): 移除选择范围中的所有 Range 对象。selectAllChildren(node): 选择指定节点的所有子节点。setPosition(node, offset): 将选择范围设置到指定节点的指定偏移量处。Range 对象Selection 对象通常包含一个或多个 Range 对象。Range 对象代表了文档中的一个连续的区域,通常用于表示用户选择的文本范围。Range 对象提供了多种属性和方法,用于操作和获取范围的详细信息。
Range 对象的属性和方法startContainer: 返回范围的起始节点。
startOffset: 返回范围在起始节点中的偏移量。
endContainer: 返回范围的结束节点。
endOffset: 返回范围在结束节点中的偏移量。
collapsed: 返回一个布尔值,表示范围是否为空。
commonAncestorContainer: 返回范围的起始节点和结束节点的共同祖先节点。
setStart(node, offset): 设置范围的起始位置。
setEnd(node, offset): 设置范围的结束位置。
setStartBefore(node): 将范围的起始位置设置为指定节点的前面。
setStartAfter(node): 将范围的起始位置设置为指定节点的后面。
setEndBefore(node): 将范围的结束位置设置为指定节点的前面。
setEndAfter(node): 将范围的结束位置设置为指定节点的后面。
selectNode(node): 选择指定节点。
selectNodeContents(node): 选择指定节点的所有内容。
collapse(toStart): 将范围折叠到起始位置或结束位置。
cloneContents(): 克隆范围内的内容并返回一个 DocumentFragment 对象。
deleteContents(): 删除范围内的内容。
extractContents(): 提取范围内的内容并返回一个 DocumentFragment 对象。
insertNode(node): 在范围的起始位置插入指定节点。
surroundContents(node): 将范围内的内容包裹在指定节点中。
compareBoundaryPoints(how, sourceRange): 比较当前范围与指定范围的边界点。
cloneRange(): 克隆当前范围并返回一个新的 Range 对象。
detach(): 释放当前范围的所有资源。
window.getSelection() 方法在实际开发中有多种应用场景,以下是一些常见的例子:
通过 window.getSelection() 方法,可以轻松获取用户选择的文本内容,并将其用于进一步的处理,例如复制到剪贴板、进行文本分析等。
document.addEventListener('mouseup', () => {
const selection = window.getSelection();
const selectedText = selection.toString();
console.log(selectedText);
});
通过 window.getSelection() 方法,可以获取用户选择的文本范围,并对其进行高亮处理。例如,可以使用 Range 对象将选择的文本包裹在一个带有特定样式的 <span> 元素中。
document.addEventListener('mouseup', () => {
const selection = window.getSelection();
if (selection.rangeCount > 0) {
const range = selection.getRangeAt(0);
const span = document.createElement('span');
span.style.backgroundColor = 'yellow';
range.surroundContents(span);
}
});
通过 window.getSelection() 方法,可以获取用户选择的文本,并根据选择的文本内容显示自定义的右键菜单。例如,可以显示一个包含“复制”、“翻译”、“搜索”等选项的菜单。
document.addEventListener('contextmenu', (event) => {
const selection = window.getSelection();
const selectedText = selection.toString();
if (selectedText) {
event.preventDefault();
// 显示自定义右键菜单
showCustomContextMenu(event.clientX, event.clientY, selectedText);
}
});
通过 window.getSelection() 方法,可以获取用户选择的文本,并对其进行进一步的分析和处理。例如,可以统计选择的文本中的单词数量、字符数量,或者对文本进行分词、词性标注等自然语言处理操作。
document.addEventListener('mouseup', () => {
const selection = window.getSelection();
const selectedText = selection.toString();
if (selectedText) {
const wordCount = selectedText.split(/\s+/).length;
const charCount = selectedText.length;
console.log(`选择的文本包含 ${wordCount} 个单词和 ${charCount} 个字符。`);
}
});
window.getSelection() 方法在现代浏览器中得到了广泛的支持,但在某些旧版浏览器中可能存在兼容性问题。因此,在使用 window.getSelection() 方法时,建议进行兼容性检查,并采取相应的兼容性处理措施。
if (window.getSelection) {
const selection = window.getSelection();
const selectedText = selection.toString();
console.log(selectedText);
} else {
console.log('当前浏览器不支持 window.getSelection() 方法');
}
此外,需要注意的是,window.getSelection() 方法只能获取用户在页面上选择的文本内容,而不能获取用户在输入框(如 <input> 或 <textarea>)中选择的文本。如果需要获取输入框中选择的文本,可以使用 selectionStart 和 selectionEnd 属性。
const input = document.querySelector('input');
const selectedText = input.value.substring(input.selectionStart, input.selectionEnd);
console.log(selectedText);
window.getSelection() 是 JavaScript 中一个非常有用的方法,用于获取用户在页面上选择的文本内容。通过 Selection 和 Range 对象,开发者可以轻松地操作和获取选择的详细信息,并将其应用于各种实际场景中。无论是在文本处理、用户交互增强,还是在自然语言处理等领域,window.getSelection() 都能发挥重要作用。