6

私は解決策を求めて Web を見回しましたが、いくつかありますが、それらはすべてコードを分割して IE と Firefox をサポートしているようです。

すべてのブラウザーで機能する、よりエレガントな方法があるかどうか疑問に思っていましたtextarea。.

どうもありがとう。

4

2 に答える 2

21

いいえ、ありません。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();
    }
}
于 2010-07-22T11:57:54.803 に答える
0

FF をサポートするコードと IE をサポートするコードの両方を実装します。フレームワークを使用して、両方のブラウザー用のコードを作成できます。フレームワークよりも、ブラウザー間の違いを分割する作業を行います。

悲しいことに、ブラウザは 100% 互換ではありません!

于 2010-07-22T11:29:17.010 に答える