JavaScript や Web ページ エディタを作成する人にとって、テキストエリアでのカーソル位置の取得は非常に重要な問題であり、多くの人がこの分野で迷ってしまい、良い方法が見つからないことがよくあります。昨日、インターネット上で JavaScript コードを見つけました。とても興味深いもので、変更するのが怖かったので、ここにオリジナルのバージョンを載せておきます。
var start=0;
var end=0;
var textBox = document.getElementById("ta"); ;
var post = textBox.value.substr(end);
textBox.value = pre document.getElementById("inputtext").value post;
}
function savePos(textBox){ 🎜> //Firefox (1.5) の場合、方法は非常に簡単です
if(typeof(textBox.selectionStart) == "number"){
start = textBox.selectionStart
end = textBox; .selectionEnd; 🎜> var range = document.selection.createRange();
if(range.parentElement().id == textBox.id){
var range = document.selセクション.createRange() / / テキストエリア全体の選択範囲を作成します。
var range_all = document.body.createTextRange();
range_all.moveToElementText(textBox);
range_all .compareEndPoints() は、range_all が 2 つのエンドポイントよりも遠い場合に比較します。 range より左にある場合、 //0 未満の値を返します。その後、range_all は 2 つの範囲の始まりが同じになるまで少し右に移動します。
// range_allの先頭を範囲の先頭に移動することで選択の開始点を計算します
for (start=0; range_all.compareEndPoints("StartToStart", range) range_all.moveStart('キャラクター」、1);
// テキストエリアの開始から選択範囲の開始までの改行数を取得し、開始に追加します
//计算一下
for (var i = 0; i if (textBox.value.charAt(i) == 'n')
開始;
// テキストエリア全体の選択範囲を作成
var range_all = document.body.createTextRange();
range_all.moveToElementText(textBox);
// range_all の先頭を範囲の末尾に移動することで選択の終了点を計算します
for (end = 0; range_all.compareEndPoints('StartToEnd', range) range_all.moveStart('キャラクター」、1);
//テキストエリアの開始から選択範囲の終了までの改行数を取得し、終了に追加します
for (var i = 0; i 終わり ;
}
}
}
document.getElementById("start").value = start;
document.getElementById("end").value = end;
}
ページ内で JS コードを呼び出す方法は次のとおりです: