selectionNN 6 IE 4(Win) DOM なし

selection オブジェクトは、ユーザーによってドキュメント内で明示的に選択された、またはスクリプトコントロールで選択された、0 以上の文字を表します。このオブジェクトは、IE と Navigator とでは大きく異なるエンティティであり (次に示すプロパティおよびメソッドの互換性評価を参照)、スクリプトによるアクセス方法もそれぞれ異なります。

 

Windows 版 IE では、selection オブジェクトを返す document.selection プロパティを使って selection オブジェクトを作成します。selection オブジェクトに対するさまざまなアクションを実行するには、TextRange オブジェクトを作成します (selection オブジェクトの createRange() メソッドを使用)。このオブジェクトのコンテンツを操作するには、TextRange のプロパティとメソッドを使用します。TextRange オブジェクトをページ上で視覚的に選択された一連のテキストに変換するには、TextRange オブジェクトのselect() メソッドを使用します。このように TextRange オブジェクトと密接に関連していることは、Internet Explorer の selection オブジェクトがこれまで、Win32 版に限定されていたことを意味しています。IE の selection オブジェクトには、テキストタイプの input 要素内、および textarea 要素内で選択されているテキストを格納できます。

 

Macintosh 版 IE には selection オブジェクトそのものが存在しません。Macintosh 版 IE には代わりに、Navigator 4 の document.getSelection() メソッドが実装されていますが、このメソッドは選択されているテキストの文字列コンテンツのみを返します。

 

Navigator 4 では、document.getSelection() メソッドを使用して、ドキュメント内で選択されているテキストにスクリプトからアクセスできます。このメソッドは Netscape 6 では使用が推奨されておらず、使用すると JavaScript Console に (エラーより重要度の低い) 警告が表示されます。Netscape 6 では、新たに堅牢な selection オブジェクトが実装されており、このオブジェクトを操作するためのプロパティやメソッドが多数用意されています。selection オブジェクトを作成するための window.getSelection() メソッドを始め、これらのプロパティやメソッドのほとんどは、Netscape 6.2 以降で利用可能になりました。ただし、Netscape 6 の selection オブジェクトのプロパティやメソッドの多くは、Range オブジェクトのものと仕様が似ています。実際、スクリプトでページ上の不連続のテキスト範囲をハイライト表示するときは、次のように Range オブジェクトを使用します。具体的には、Range オブジェクトを作成してサイズを設定し、selection オブジェクトの addRange() メソッドを使って、このRange をハイライト表示するテキストに追加します。Netscape 6 の selection オブジェクトは Range オブジェクトと同様、body 要素内にあるコンテンツの操作のみでき、編集可能なテキストボックス内のテキストの操作はできません。

 

初期のブラウザ (Macintosh 版 IE を含む) では、ボタンをクリックすると、現在選択されているテキストの選択が解除されるので注意してください。そのため、これらのブラウザでの選択に関するスクリプトアクションはすべて、onselect または onmouseup イベントで起動するか、タイマー呼び出しの関数 (第 12 章の window.setTimeout() メソッドを参照) で実行する必要があります。最近のブラウザでは、ボタンを押してもコンテンツの選択状態は保たれます。

 
オブジェクト参照
 
  • document.selection
  • window.getSelection()
 
オブジェクト固有のプロパティ
 
anchorNodeanchorOffsetfocusNodefocusOffset
isCollapsedrangeCounttypetypeDetail
 
オブジェクト固有のメソッド
 
addRange()clear()collapse()
collapseToEnd()collapseToStart()containsNode()
createRange()createRangeCollection()deleteFromDocument()
empty()extend()getRangeAt()
removeAllRanges()removeRange()selectAllChildren()
selectionLanguageChange()toString()
 
オブジェクト固有のイベントハンドラープロパティ

なし

anchorNode、focusNodeNN 6 IE なし DOM なし

読み取り専用

ユーザーが選択を開始したノード (アンカー) と終了したノード (フォーカス) への参照を返します。ほとんどの場合、これらはテキストノードタイプです。選択部分が addRange() メソッドによって設定または拡張されている場合、これらのプロパティは、最後に追加された範囲のノード境界点を示します。

 
 
var anchor = selectionRef.anchorNode;
if (anchor.nodeType == 3 && anchor.parentNode.tagName == "td") {
    // process selection start inside a table cell
}
 

ドキュメントツリーノードへの参照、または選択部分がない場合には null

 
既定値

null

anchorOffset、focusOffsetNN 6 IE なし DOM なし

読み取り専用

選択部分のアンカーノードまたはフォーカスノードの先頭からの文字数またはノード数を示す整数を返します (anchorNode プロパティ、および focusNode プロパティを参照)。ノードがテキストノード場合、オフセットの単位は文字です。要素ノードの場合、オフセットの単位はノードです。このプロパティのビヘイビアは Range オブジェクトの offset プロパティのものと似ています。ほとんどの場合、これらの値はテキストタイプのノード内の文字数となります。選択部分が addRange() メソッドによって設定または拡張されている場合、これらのプロパティは、最後に追加された範囲のノード境界点のオフセットを示します。

 
 
var selStartOffset = selectionRef.anchorOffset;
 

整数

 
既定値

0

isCollapsedNN 6 IE なし DOM なし

読み取り専用

選択部分のアンカーとフォーカスの境界点が同じ場合に、ブール値 true を返します。

 
 
if (selectionRef.isCollapsed) {
    // selection is an insertion point
}
 

true または false のブール値

 
既定値

true

rangeCountNN 6 IE なし DOM なし

読み取り専用

選択部分に含まれる Range オブジェクト (Netscape 6 では不連続の場合もあり) の数を示す整数を返します。ユーザーの手動による選択では、Range オブジェクトは常に 1 つですが、addRange() メソッドによる選択では、複数の不連続の範囲を選択部分に追加できます。ハイライト表示されている選択部分のプロパティを調べるには、getRangeAt() メソッドを使用します。

 
 
var howMany = selectionRef.rangeCount;
 

整数

 
既定値

0

typeNN なし IE 4(Win) DOM なし

読み取り専用

現在の selection オブジェクトで 1 文字以上が選択されているか、そのオブジェクトが単なる挿入ポイントであるかを示します。

 
 
if (document.selection.type == "Text") {
    ...
}
 

NoneTextControl のいずれかの定数を示す文字列。最後の Control は HTML の選択可能な編集コントロールが使用されているときのみ返されます。

 
既定値

なし

typeDetailNN なし IE 5.5(Win) DOM なし

読み取り専用

このプロパティは、Ineternet Explorer のコンポーネントを利用する他のアプリケーションのためのプレースホルダーとして用意されています。このようなアプリケーションは必要に応じて選択タイプに関する追加の情報を提供できます。

addRange()NN 6 IE なし DOM なし

addRange(RangeReference)

Range オブジェクトをページ上でハイライト表示された選択部分に変換します。アプリケーションで必要に応じて不連続の範囲をいくつでも選択部分に追加できます。範囲を追加するたびに selection オブジェクトの rangeCount プロパティの値も 1 つずつ増えます。範囲は選択部分内で重なることもあります。

 
パラメータ
 
  • Range オブジェクトのメソッドで境界点が設定された Range オブジェクトへの参照を返します。
 
戻り値

なし

clear()NN なし IE 4(Win) DOM なし

ドキュメント内の現在の選択部分を削除します。たとえば次のタグのイベントハンドラーは、p 要素の選択されたテキストを、ユーザーが選択を開始してから 2 秒後に削除します。

<p onselectstart="setTimeout('document.selection.clear( )',2000);>"
 
パラメータ

なし

 
戻り値

なし

collapse()NN 6 IE なし DOM なし

collapse(nodeReference, offset)

現在の選択部分を 2 つのパラメータで指定された位置まで縮退します。既にハイライト表示されている選択部分は通常の表示に戻ります。

 
パラメータ
 
  • ドキュメントツリー内で縮退された選択部分の移動先となるテキストノードまたは要素ノードへの参照
  • 縮退された選択部分の移動先となる nodeReference ノード内の文字数またはノード数を示す整数。カウントはノードの開始点から行います。単位はテキストノードの場合は文字数、要素ノードの場合はノード数です。
 
戻り値

なし

collapseToEnd()、collapseToStart()NN 6 IE なし DOM なし

現在の選択部分を selection オブジェクトの開始点 (collapseToStart()) または終了点 (collapseToEnd()) まで縮退します。既にハイライト表示されている選択部分は通常の表示に戻ります。選択部分に複数の範囲が含まれる場合、これらの collapse メソッドでは、連結された選択部分の最も外側の境界にある開始点または終了点を使用します。縮退された選択部分に含まれる範囲は 1 つのみです。

 
パラメータ

なし

 
戻り値

なし

containsNode()NN 6 IE なし DOM なし

containsNode(nodeReference, entirelyFlag)

パラメータとして渡されたノードが現在の selection オブジェクトに含まれている場合に、ブール値 true を返します。ノードが含まれているかどうかの定義は 2 番目のパラメータで厳しくしたり緩くしたりできますが、このパラメータの設定がこのメソッドの動作に必ずしも反映されるわけではないようです。メソッドの動作を確実にするには、2 番目のパラメータとして null を渡します。これによりメソッドは、渡されたノードの全体が含まれている場合のみ、そのノードが現在の選択部分に含まれていると見なします。

 
パラメータ
 
  • ドキュメントツリー内のアドレス可能なテキストノードまたは要素ノードへの参照
  • ブール値または nulltrue を指定すると、ノードの一部分のみが現在の選択部分に含まれている場合に、このメソッドは true を返すようです。
 
戻り値

true または false のブール値

createRange()NN なし IE 4(Win) DOM なし

現在の selection オブジェクトから TextRange オブジェクトを作成します。このメソッドのステートメントの例を次に示します。

var myRange = document.selection.createRange( );
 

選択されたテキストのコンテンツはスクリプトで操作できます。

 
パラメータ

なし

 
戻り値

TextRange オブジェクト

createRangeCollection()NN なし IE 5.5(Win) DOM なし

TextRange コレクションオブジェクトを作成します。今後 Internet Explorer でも複数の不連続の選択部分がサポートされることを想定したメソッドです。

 
パラメータ

なし

 
戻り値

TextRange コレクションオブジェクト

deleteFromDocument()NN 6 IE なし DOM なし

ドキュメントツリーから現在の選択部分を削除します。ノード階層は Range.deleteContents() と同じ規則に従って自動的に調整されます。

 
パラメータ

なし

 
戻り値

なし

empty()NN なし IE 4(Win) DOM なし

現在の選択部分の選択を解除し、selection オブジェクトの type プロパティに None を設定します。以前に選択されたコンテンツには影響がありません。

 
パラメータ

なし

 
戻り値

なし

extend()NN 6 IE なし DOM なし

extend(nodeReference, offset)

指定されたドキュメントツリーノードとそのノード内でのオフセットが示す位置に選択部分の終了点 (フォーカス) を移動します。開始点 (アンカー) は移動しません。

 
パラメータ
 
  • ドキュメントツリー内で選択部分のフォーカス (終了点) の移動先となるテキストノードまたは要素ノードへの参照
  • 縮退された選択部分の移動先となる nodeReference ノード内の文字数またはノード数を示す整数。カウントはノードの開始点から行います。単位はテキストノードの場合は文字数、要素ノードの場合はノード数です。
 
戻り値

なし

getRangeAt()NN 6 IE なし DOM なし

getRangeAt(rangeIndex)

範囲を含む selection オブジェクトについて、その 0 から始まる数値インデックスのうちで、渡されたパラメータと一致するインデックスに対応する範囲への参照を返します。連続する選択部分の場合、パラメータには 0 を指定します。不連続の選択部分の場合は、getRangeAt() メソッドを使用することにより、Range オブジェクトとして選択部分に追加した個々の範囲を取得できます。selection オブジェクトに含まれる Range オブジェクトの数を取得するには、selection.rangeCount プロパティを使用します。このメソッドを呼び出しても、選択部分内の範囲の順序に影響はありません。

 
パラメータ
 
  • 0 から始まる整数のインデックス値
 
戻り値

Range オブジェクトへの参照

removeAllRanges()NN 6 IE なし DOM なし

ドキュメントツリーではなく現在の選択部分からすべての Range オブジェクトを削除します。選択部分は縮退され、rangeCount プロパティの値は 0 になります。

 
パラメータ

なし

 
戻り値

なし

removeRange()NN 6 IE なし DOM なし

removeRange(rangeReference)

ドキュメントツリーではなく現在の選択部分から特定の Range オブジェクトを削除します。選択部分内に複数の範囲がある場合は、次のように、特定の条件に照らし合わせてすべての Range オブジェクトに対してループを実行し、その条件に合ったオブジェクトを削除できます。

var oneRange;
var sel = window.getSelection( );
for (var i = 0; i< sel.rangeCount; i++) {
    oneRange = sel.getRangeAt(i);
    if (oneRange. someProperty == someDiscerningValue) {
        sel.removeRange(oneRange);
    }
}
 
パラメータ
 
  • 現在の選択部分に既に追加されている Range オブジェクトの 1 つへの参照お
 
戻り値

なし

selectAllChildren()NN 6 IE なし DOM なし

selectAllChildren(elementNodeReference)

パラメータとして渡されたノードとそのすべての子ノードを selection オブジェクトに追加します。このメソッドにより、スクリプトで要素ノードを選択する処理を簡略化できます。このメソッドを要素ノードに対して使用すると、アンカーノードとフォーカスノードを同じ要素ノードにすることができます。このメソッドにテキストノードへの参照を渡すと、そのテキストノードの先頭文字の前まで選択部分が縮退されます。このメソッドを既存の選択部分に対して呼び出すと、すべての範囲が連結されて、その要素を含む 1 つの新しい範囲になります。

 
パラメータ
 
  • ドキュメントツリー内で選択部分になる要素ノードへの参照
 
戻り値

なし

selectionLanguageChange()NN 6 IE なし DOM なし

selectionLanguageChange(RTLFlag)

カーソルの Bidi (双方向) レベルを制御します。

 
パラメータ
 
  • ブール値。右から左の場合は true、左から右の場合は false です。
 
戻り値

なし

toString()NN 6 IE なし DOM なし

body 要素内で選択部分内にあるコンテンツのみを格納した文字列を返します。タグと属性は無視されます。

 
パラメータ

なし

 
戻り値

文字列