Firefox と chrome window.getSelection は、ドキュメント内の現在の選択を取得するために使用されますが、現在の選択はテキストエリアにあり、window.getSelection は選択を返しませんでしたが、テキストエリア自体を返しました。では、firefox と chrome で正しい選択をするにはどうすればよいでしょうか。
4728 次
2 に答える
5
選択したテキストをテキストエリアに取得する必要がありますか? selectionStart と selectionEnd を求めている可能性があります (Internet Explorer には存在せず、Firefox と Chrome で動作します)。
Select some text below and then click the button:<br/>
<textarea id="myTextarea" rows="5" cols="30">
Lorem ipsum dolor sit amet,
consectetur adipiscing elit.
</textarea>
<button onclick="alert(getTextSelection())">alert text selection</button>
<script type="text/javascript">
function getTextSelection(){
var field = document.getElementById("myTextarea");
var startPos = field.selectionStart;
var endPos = field.selectionEnd;
var field_value = field.value;
var selectedText = field_value.substring(startPos,endPos);
return selectedText;
}
</script>
複数のテキストエリアがあり、選択時に出力を取得したい場合:
Select some text in either textarea:<br/>
<textarea rows="5" cols="30" onselect="alert(getTextSelection(this))">
Lorem ipsum dolor sit amet,
consectetur adipiscing elit.
</textarea>
<textarea rows="5" cols="30" onselect="alert(getTextSelection(this))">
fate it seems
not without a sense of irony
</textarea>
<script type="text/javascript">
function getTextSelection(field){
var startPos = field.selectionStart;
var endPos = field.selectionEnd;
var selectedText = field.value.substring(startPos,endPos);
return selectedText;
}
</script>
または、ボタンでそれを行うこともできますが、グローバル変数を使用します。
Select some text in either textarea and click the button:<br/>
<textarea rows="5" cols="30" onselect="window.selectedTextarea=this">
Lorem ipsum dolor sit amet,
consectetur adipiscing elit.
</textarea>
<textarea rows="5" cols="30" onselect="window.selectedTextarea=this">
fate it seems
not without a sense of irony
</textarea>
<button onclick="alert(getTextSelection())">alert text selection</button>
<script type="text/javascript">
// warning: global variable: dirty!!!
var selectedTextarea
function getTextSelection(){
var field = window.selectedTextarea;
var startPos = field.selectionStart;
var endPos = field.selectionEnd;
var selectedText = field.value.substring(startPos,endPos);
return selectedText;
}
</script>
于 2012-05-15T08:34:42.627 に答える
0
テキストエリアとテキスト入力には異なる選択 API があります。それらには、テキストエリア/入力のプロパティ内の文字オフセットであるプロパティがselectionStart
あります。これらのプロパティは HTML5 で標準化されており、すべての主要なブラウザーの現在のバージョンで実装されていますが、IE < 9 には別の API があります。selectionEnd
value
于 2012-05-15T08:32:04.353 に答える