私は、ユーザーの貼り付けデータを取り込み、操作してから、ユーザーのカーソルがあった場所に戻すスクリプトを作成しています。これは、ペーストデータがHTMLであり、ユーザーが貼り付ける場所がプレーンテキストのみを受け入れるtextarea
である必要があるためです。Firefoxがテキスト領域にフォーカスを設定できない
<textarea autofocus="true" id="editable" name="editable"></textarea>
ユーザーは、いくつかのデータを貼り付けしようとすると、私のコードが隠されcontenteditable div
にペーストをリダイレクトします。これは、コードです。フォーカスを切り替える前に、私はそれを保存するので、これは、キャレット位置を失う:私は必要な変換を実行した後
var storedCaret = textarea.selectionStart;
その後、私はそれを取得しよう:
editable.focus();
editable.setSelectionRange(storedCaret, storedCaret);
window.setTimeout(function() {
document.execCommand("insertHTML", false, formattedText);
}, 50);
これだけで正常に動作しますChrome用(49.0.2623.87 m)しかし、Firefox(43.0.1)ではペーストがうまくいかず、私の欲求不満に悩まされました。私のデバッグから、execCommandが発生すると、textarea#editable
がdocument.activeElement
として正しく選択されていますが、ペーストが完全に失敗します。
jQueryは許容される解決策ですが、私は他のplguinsを使用する必要はありません。私の立場では失われたと混乱した魂のために