files/en-us/web/api/document/getselection/index.md
{{APIRef("DOM")}}
The getSelection() method of the {{DOMxRef("Document")}} interface returns the {{DOMxRef("Selection")}} object associated with this document, representing the range of text selected by the user, or the current position of the caret.
getSelection()
None.
A {{DOMxRef("Selection")}} object, or null if the document has no browsing context (for example, it is the document of an {{htmlelement("iframe")}} that is not attached to a document).
const selection = document.getSelection();
const selRange = selection.getRangeAt(0);
// do stuff with the range
console.log(selection); // Selection object
Some functions (like {{DOMxRef("Window.alert()")}}) call {{JSxRef("Object.toString", "toString()")}}
automatically and the returned value is passed to the function. As a consequence, this will return the selected text
and not the Selection object:
alert(selection);
However, not all functions call toString() automatically.
To use a Selection object as a string, call its toString() method directly:
let selectedText = selection.toString();
You can call {{domxref("Window.getSelection()")}}, which is identical to window.document.getSelection().
It is worth noting that currently getSelection() doesn't work on the
content of {{htmlelement("input")}} elements in Firefox.
{{domxref("HTMLInputElement.setSelectionRange()")}}) could be used to work around this.
Notice also the difference between selection and focus. {{domxref("Document.activeElement")}} returns the focused element.
{{Specifications}}
{{Compat}}