Window.getSelection

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

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

语法

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

示例

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() 方法:

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

相关对象

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

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

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

浏览器兼容性

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
getSelectionChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 9Opera Full support 9Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0

Legend

Full support  
Full support

相关链接