0

「shift+arrow_left」でテキストを選択すると、開始位置が変更されます。例を挙げて説明します。

例: -contenteditable div-挿入されたcharcode0182(¶)自分で=変数:hardReturn

divのテキスト: test¶abc

キーアップ+arrow_leftのコード:

    var myRange = document.selection.createRange(); 
myRange.moveStart('character', -1); 
var charVoor = myRange.text.substring(0, 1);

if(charVoor == hardReturn){
    myRange.moveEnd('character', -1);
    myRange.select();   
}else{
} 

だから私の問題: 私のカーソルは「b」と「c」の間にあり、私は選択を開始します...私は選択の下に「ab」を取得し、次に左に別の選択を行います、私の選択は「¶」の前に自動的にジャンプします、しかし、その後、選択の開始位置は「¶」の前であり、開始した「b」と「c」の間ではありません。

4

1 に答える 1

0

オブジェクトのクローンを使用しTextRangeてチェックできhardReturnます。

var myRange = document.selection.createRange();
var chkRange = myRange.duplicate();
chkRange.moveStart('character', -1); 
var charVoor = chkRange.text.substring(0, 1);

if(charVoor == hardReturn){
    chkRange.moveEnd('character', -1);
    ....  
}

選択した最終的なテキストが何であるかわかりません。必要に応じて、メソッドを使用してオリジナルを移動したりmyRange、を使用してとの間の範囲を縮小したりできます。chkRangesetEndPoint()collapse()ab

MSDN: Traversal and RangeからsetEndPoint()、その他のメソッドとプロパティを見つけることができます。TextRange

于 2012-06-12T14:58:05.403 に答える