Window: getSelection() 方法
Window 接口的 getSelection() 方法返回与窗口的 document 关联的 Selection 对象,该对象表示用户选择的文本范围或插入符的当前位置。
语法
getSelection()
参数
无。
返回值
一个 Selection 对象,如果关联的文档没有 浏览上下文(例如,窗口是未附加到文档的 <iframe>),则返回 null。
当在未显示的 <iframe> 上调用时(例如,设置了 display: none),Firefox 返回 null,而其他浏览器则返回一个 Selection 对象,其 Selection.type 设置为 None。
示例
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 被传递给 window.alert() 时,会自动调用 selObj.toString()。然而,尝试直接在 Selection 对象上使用 JavaScript String 属性或方法(如 length 或 substr)将导致错误(如果它没有该属性或方法),并且如果它确实有,也可能返回意外的结果。要将 Selection 对象用作字符串,请直接调用其 toString() 方法。
const selectedText = selObj.toString();
- selObj是一个- Selection对象。
- selectedText是一个字符串(选中的文本)。
相关对象
你可以调用 Document.getSelection(),它与 Window.getSelection() 的工作方式相同。
值得注意的是,目前在 Firefox 和 Edge (Legacy) 中,getSelection() 在 <textarea> 和 <input> 元素的内容上不起作用。可以使用 HTMLInputElement.setSelectionRange() 或 selectionStart 和 selectionEnd 属性来解决此问题。
还要注意selection(选择)和focus(焦点)之间的区别。Document.activeElement 返回具有焦点的元素。
规范
| 规范 | 
|---|
| Selection API # dom-window-getselection | 
浏览器兼容性
加载中…