MDN wants to talk to developers like you: https://qsurvey.mozilla.com/s3/8d22564490d8

概要

ユーザーが選択した文字列の範囲やキャレットの現在位置を示す Selection オブジェクトを返します。 NB. this is nothing to do with the DOM selection list object! What the heck is 'selection list object'? -Nickolay

構文

selection = window.getSelection();

返り値

Selection オブジェクト。

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

function foo() {
   var selObj = window.getSelection(); 
   alert(selObj);
   var selRange = selObj.getRangeAt(0);
   // do stuff with the range
}

注記

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

JavaScript では、文字列を引数にとる関数 (window.alertdocument.write) に selection オブジェクトが渡されるとき、selection オブジェクトのかわりにそのオブジェクトと対応する文字列(たとえば、選択範囲の文字列)が渡されます。このために、それが実際には独自のプロパティやメソッドを持っているオブジェクトであるにもかかわらず、selection オブジェクトは文字列のように見えることもあります。しかしこれは、正確には toString() の返り値が渡されているのです。

上の例では、selObjwindow.alert() に渡されるときに自動的に「変換されて」います。しかし、JavaScript の String プロパティや、lengthsubstr などといったメソッドを使用する際には、明示的に toString を呼び出す必要があります。

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

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

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

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

I'm treading carefully with the word "convert" here because it could be misinterpreted as a permanent convert - Maian

仕様書

仕様 策定状況 コメント
Selection API
Window.getSelection() の定義
草案 新仕様。
HTML Editing APIs
Window.getSelection() の定義
勧告改訂案 初回定義。

ブラウザー実装状況

機能 Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
基本サポート (有) (有) (有) 9 (有) (有)
Feature Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support ? (有) ? ? ? ?

関連情報

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

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