概要

ユーザーが選択した文字列の範囲やキャレットの現在位置を示す Selection オブジェクトを返します。

構文

selection = window.getSelection();

A Selection オブジェクト。

文字列へ型変換すると、空の文字列("")を追加するか Selection.toString() を使って、選択された文字列を返します。

function foo() {
    var selObj = window.getSelection(); 
    alert(selObj);
    var selRange = selObj.getRangeAt(0);
    // 以下、取得した選択文字列に対して何らかの処理を行う
}

注記

Selection オブジェクトの文字列表現

JavaScript では、文字列が渡されることを前提としている関数 (window.alert()document.write()) にオブジェクトが渡されると、そのオブジェクトの toString() メソッドが呼び出され、その結果が関数へ渡されます。このため、実際はプロパティとメソッドを持つオブジェクトなのに、文字列であるかのように見えてしまいます。

上の例では、window.alert() へ渡されるときに自動的に selObj.toString() が呼び出されます。しかし、Selection オブジェクトで JavaScript の String プロパティや lengthsubstr などのメソッドを直に使おうとすると、オブジェクトにその名前のプロパティやメソッドが存在しないはエラーとなり、存在する場合は予期せぬ結果を返すでしょう。Selection オブジェクトを文字列として使うなら、下記のように toString() メソッドを呼び出してください。

var selectedText = selObj.toString();
  • selObjSelection オブジェクトです。
  • selectedText は文字列です。 (選択された文字列)

同じように機能する Document.getSelection() を呼び出すことができます。

HTML input 要素は selection を扱うための簡単な支援 API を提供しています。 (詳細: HTMLInputElement.setSelectionRange())

selectionfocus の違いに注意してください。Document.activeElement はフォーカスされた要素を返します。

仕様

仕様書 策定状況 コメント
Selection API
Window.getSelection() の定義
草案 新仕様
HTML Editing APIs
Window.getSelection() の定義
編集者草案 初期定義

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
基本対応Chrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 ありIE 完全対応 9Opera 完全対応 ありSafari 完全対応 ありWebView Android ? Chrome Android ? Edge Mobile 完全対応 ありFirefox Android 完全対応 55
補足
完全対応 55
補足
補足 No support for selection events.
Opera Android 完全対応 37Safari iOS 完全対応 5.1
補足
完全対応 5.1
補足
補足 No support for selection start.
Samsung Internet Android ?

凡例

完全対応  
完全対応
実装状況不明  
実装状況不明
実装ノートを参照してください。
実装ノートを参照してください。

関連情報

ドキュメントのタグと貢献者

このページの貢献者: sutara79, dskmori, teoli, khalid32, ethertank, Mgjbot, Luna8bit
最終更新者: sutara79,