selection | NN 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() メソッドを参照) で実行する必要があります。最近のブラウザでは、ボタンを押してもコンテンツの選択状態は保たれます。 |
||||||||||||||||||
オブジェクト参照 | ||||||||||||||||||
|
||||||||||||||||||
オブジェクト固有のプロパティ | ||||||||||||||||||
|
||||||||||||||||||
オブジェクト固有のメソッド | ||||||||||||||||||
|
||||||||||||||||||
オブジェクト固有のイベントハンドラープロパティ | ||||||||||||||||||
なし |
anchorNode、focusNode | NN 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、focusOffset | NN 6 IE なし DOM なし |
読み取り専用 | |
選択部分のアンカーノードまたはフォーカスノードの先頭からの文字数またはノード数を示す整数を返します (anchorNode プロパティ、および focusNode プロパティを参照)。ノードがテキストノード場合、オフセットの単位は文字です。要素ノードの場合、オフセットの単位はノードです。このプロパティのビヘイビアは Range オブジェクトの offset プロパティのものと似ています。ほとんどの場合、これらの値はテキストタイプのノード内の文字数となります。選択部分が addRange() メソッドによって設定または拡張されている場合、これらのプロパティは、最後に追加された範囲のノード境界点のオフセットを示します。 |
|
例 | |
var selStartOffset = selectionRef.anchorOffset; |
|
値 | |
整数 |
|
既定値 | |
0 |
isCollapsed | NN 6 IE なし DOM なし |
読み取り専用 | |
選択部分のアンカーとフォーカスの境界点が同じ場合に、ブール値 true を返します。 |
|
例 | |
if (selectionRef.isCollapsed) { // selection is an insertion point } |
|
値 | |
true または false のブール値 |
|
既定値 | |
true |
rangeCount | NN 6 IE なし DOM なし |
読み取り専用 | |
選択部分に含まれる Range オブジェクト (Netscape 6 では不連続の場合もあり) の数を示す整数を返します。ユーザーの手動による選択では、Range オブジェクトは常に 1 つですが、addRange() メソッドによる選択では、複数の不連続の範囲を選択部分に追加できます。ハイライト表示されている選択部分のプロパティを調べるには、getRangeAt() メソッドを使用します。 |
|
例 | |
var howMany = selectionRef.rangeCount; |
|
値 | |
整数 |
|
既定値 | |
0 |
type | NN なし IE 4(Win) DOM なし |
読み取り専用 | |
現在の selection オブジェクトで 1 文字以上が選択されているか、そのオブジェクトが単なる挿入ポイントであるかを示します。 |
|
例 | |
if (document.selection.type == "Text") { ... } |
|
値 | |
None、Text、Control のいずれかの定数を示す文字列。最後の Control は HTML の選択可能な編集コントロールが使用されているときのみ返されます。 |
|
既定値 | |
なし |
typeDetail | NN なし IE 5.5(Win) DOM なし |
読み取り専用 | |
このプロパティは、Ineternet Explorer のコンポーネントを利用する他のアプリケーションのためのプレースホルダーとして用意されています。このようなアプリケーションは必要に応じて選択タイプに関する追加の情報を提供できます。 |
addRange() | NN 6 IE なし DOM なし |
addRange(RangeReference) | |
Range オブジェクトをページ上でハイライト表示された選択部分に変換します。アプリケーションで必要に応じて不連続の範囲をいくつでも選択部分に追加できます。範囲を追加するたびに selection オブジェクトの rangeCount プロパティの値も 1 つずつ増えます。範囲は選択部分内で重なることもあります。 |
|
パラメータ | |
|
|
戻り値 | |
なし |
clear() | NN なし IE 4(Win) DOM なし |
ドキュメント内の現在の選択部分を削除します。たとえば次のタグのイベントハンドラーは、p 要素の選択されたテキストを、ユーザーが選択を開始してから 2 秒後に削除します。 <p onselectstart="setTimeout('document.selection.clear( )',2000);>" |
|
パラメータ | |
なし |
|
戻り値 | |
なし |
collapse() | NN 6 IE なし DOM なし |
collapse(nodeReference, offset) | |
現在の選択部分を 2 つのパラメータで指定された位置まで縮退します。既にハイライト表示されている選択部分は通常の表示に戻ります。 |
|
パラメータ | |
|
|
戻り値 | |
なし |
collapseToEnd()、collapseToStart() | NN 6 IE なし DOM なし |
現在の選択部分を selection オブジェクトの開始点 (collapseToStart()) または終了点 (collapseToEnd()) まで縮退します。既にハイライト表示されている選択部分は通常の表示に戻ります。選択部分に複数の範囲が含まれる場合、これらの collapse メソッドでは、連結された選択部分の最も外側の境界にある開始点または終了点を使用します。縮退された選択部分に含まれる範囲は 1 つのみです。 |
|
パラメータ | |
なし |
|
戻り値 | |
なし |
containsNode() | NN 6 IE なし DOM なし |
containsNode(nodeReference, entirelyFlag) | |
パラメータとして渡されたノードが現在の selection オブジェクトに含まれている場合に、ブール値 true を返します。ノードが含まれているかどうかの定義は 2 番目のパラメータで厳しくしたり緩くしたりできますが、このパラメータの設定がこのメソッドの動作に必ずしも反映されるわけではないようです。メソッドの動作を確実にするには、2 番目のパラメータとして null を渡します。これによりメソッドは、渡されたノードの全体が含まれている場合のみ、そのノードが現在の選択部分に含まれていると見なします。 |
|
パラメータ | |
|
|
戻り値 | |
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) | |
指定されたドキュメントツリーノードとそのノード内でのオフセットが示す位置に選択部分の終了点 (フォーカス) を移動します。開始点 (アンカー) は移動しません。 |
|
パラメータ | |
|
|
戻り値 | |
なし |
getRangeAt() | NN 6 IE なし DOM なし |
getRangeAt(rangeIndex) | |
範囲を含む selection オブジェクトについて、その 0 から始まる数値インデックスのうちで、渡されたパラメータと一致するインデックスに対応する範囲への参照を返します。連続する選択部分の場合、パラメータには 0 を指定します。不連続の選択部分の場合は、getRangeAt() メソッドを使用することにより、Range オブジェクトとして選択部分に追加した個々の範囲を取得できます。selection オブジェクトに含まれる Range オブジェクトの数を取得するには、selection.rangeCount プロパティを使用します。このメソッドを呼び出しても、選択部分内の範囲の順序に影響はありません。 |
|
パラメータ | |
|
|
戻り値 | |
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); } } |
|
パラメータ | |
|
|
戻り値 | |
なし |
selectAllChildren() | NN 6 IE なし DOM なし |
selectAllChildren(elementNodeReference) | |
パラメータとして渡されたノードとそのすべての子ノードを selection オブジェクトに追加します。このメソッドにより、スクリプトで要素ノードを選択する処理を簡略化できます。このメソッドを要素ノードに対して使用すると、アンカーノードとフォーカスノードを同じ要素ノードにすることができます。このメソッドにテキストノードへの参照を渡すと、そのテキストノードの先頭文字の前まで選択部分が縮退されます。このメソッドを既存の選択部分に対して呼び出すと、すべての範囲が連結されて、その要素を含む 1 つの新しい範囲になります。 |
|
パラメータ | |
|
|
戻り値 | |
なし |
selectionLanguageChange() | NN 6 IE なし DOM なし |
selectionLanguageChange(RTLFlag) | |
カーソルの Bidi (双方向) レベルを制御します。 |
|
パラメータ | |
|
|
戻り値 | |
なし |
toString() | NN 6 IE なし DOM なし |
body 要素内で選択部分内にあるコンテンツのみを格納した文字列を返します。タグと属性は無視されます。 |
|
パラメータ | |
なし |
|
戻り値 | |
文字列 |