私は解決策を求めて Web を見回しましたが、いくつかありますが、それらはすべてコードを分割して IE と Firefox をサポートしているようです。
すべてのブラウザーで機能する、よりエレガントな方法があるかどうか疑問に思っていましたtextarea
。.
どうもありがとう。
私は解決策を求めて Web を見回しましたが、いくつかありますが、それらはすべてコードを分割して IE と Firefox をサポートしているようです。
すべてのブラウザーで機能する、よりエレガントな方法があるかどうか疑問に思っていましたtextarea
。.
どうもありがとう。
いいえ、ありません。IETextRange
には、ジョブを実行するためのオブジェクトがあります。IE >= 9 およびその他すべては、テキストエリアとテキスト入力のプロパティを持っselectionStart
ています。selectionEnd
この特定のタスクはそれほど悪くありません: 以下は、現在の選択 (存在する場合) を削除し、キャレットにテキストを挿入し、挿入されたテキストの直後にキャレットを再配置します。すべての主要なブラウザーで:
function insertTextAtCursor(el, text) {
var val = el.value, endIndex, range;
if (typeof el.selectionStart != "undefined" && typeof el.selectionEnd != "undefined") {
endIndex = el.selectionEnd;
el.value = val.slice(0, el.selectionStart) + text + val.slice(endIndex);
el.selectionStart = el.selectionEnd = endIndex + text.length;
} else if (typeof document.selection != "undefined" && typeof document.selection.createRange != "undefined") {
el.focus();
range = document.selection.createRange();
range.collapse(false);
range.text = text;
range.select();
}
}
FF をサポートするコードと IE をサポートするコードの両方を実装します。フレームワークを使用して、両方のブラウザー用のコードを作成できます。フレームワークよりも、ブラウザー間の違いを分割する作業を行います。
悲しいことに、ブラウザは 100% 互換ではありません!