Window: getSelection() 方法

getSelection() 方法是 Window 接口的一部分,它返回与窗口的 document 关联的 Selection 对象,表示用户选择的文本范围或光标的当前位置。

语法

js
getSelection()

参数

无。

返回值

一个 Selection 对象,如果关联的文档没有 浏览上下文(例如,该窗口是一个未附加到文档的 <iframe>),则为 null

当在未显示的 <iframe> 上调用(例如,display: none 设置的地方)时,Firefox 返回 null,而其他浏览器返回 Selection 对象,其 Selection.type 设置为 None

示例

js
function foo() {
  const selObj = window.getSelection();
  alert(selObj);
  const selRange = selObj.getRangeAt(0);
  // do stuff with the range
}

说明

Selection 对象的字符串表示

在 JavaScript 中,当对象传递给期望字符串的函数(如 window.alert()document.write())时,对象的 toString() 方法将被调用,并且返回的值将被传递给该函数。这可能会使对象在与其他函数一起使用时看起来像字符串,而实际上它是一个具有属性和方法的对象。

在上面的示例中,selObj.toString() 会在传递给 window.alert() 时自动调用。但是,如果尝试直接在 Selection 对象上使用 JavaScript String 属性或方法(如 lengthsubstr),如果它没有该属性或方法,则会导致错误,如果它有,则可能返回意外结果。要将 Selection 对象用作字符串,请直接调用其 toString() 方法

js
const selectedText = selObj.toString();
  • selObj 是一个 Selection 对象。
  • selectedText 是一个字符串(选定的文本)。

你可以调用 Document.getSelection(),它与 Window.getSelection() 工作方式相同。

值得注意的是,目前 getSelection() 无法在 Firefox 和 Edge(传统)中的 <textarea><input> 元素的内容上工作。可以使用 HTMLInputElement.setSelectionRange()selectionStartselectionEnd 属性来解决此问题。

还要注意选择焦点之间的区别。 Document.activeElement 返回聚焦的元素。

规范

规范
选择 API
# dom-window-getselection

浏览器兼容性

BCD 表仅在浏览器中加载

另请参见