Window.getSelection

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.

返回一个 Selection 对象,表示用户选择的文本范围或光标的当前位置。

语法

js
getSelection()
  • selection 是一个 Selection 对象。如果想要将 selection 转换为字符串,可通过连接一个空字符串("")或使用 String.toString() 方法。

示例

js
function foo() {
  let selObj = window.getSelection();
  console.log(selObj);
  let selRange = selObj.getRangeAt(0);
  // 其他代码
}

备注

在 JavaScript 中,当一个对象被传递给期望字符串作为参数的函数中时(如 window.alertdocument.write),对象的toString()方法会被调用,然后将返回值传给该函数。

在上例中,selObj.toString() 会在传递到 window.alert()时自动调用。然而,当你试图在 Selection 对象上使用一个 JavaScript 的String 对象上的属性或者方法时(如 String.prototype.length 或者 String.prototype.substr()),会导致错误(如果没有相应的属性或方法时)或返回不是期望的结果(如果存在相应的属性或方法)。如果想要将 Selection 对象作为一个字符串使用,请直接调用 toString() 方法:

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

相关对象

你还可以使用 Document.getSelection(),两个方法等价。

值得注意的是,目前在 Firefox, Edge (非 Chromium 版本) 及 Internet Explorer 中,getSelection()<textarea><input> 元素不起作用。 HTMLInputElement.setSelectionRange()selectionStartselectionEnd 属性可用于解决此问题。

还要注意选择不同于焦点(详见 Selection 及输入焦点)。可使用Document.activeElement 来返回当前的焦点元素。

浏览器兼容性

BCD tables only load in the browser

相关链接