Ich habe ein Skript, wo ich Benutzer einfügen Daten einfügen, manipulieren, und dann wieder an der gleichen Stelle des Benutzers Cursor eingefügt wurde. Dies liegt daran, dass die Einfügedaten HTML sind und der Ort, an dem der Benutzer einfügt, textarea
sein muss, der nur reinen Text akzeptiert. Dies ist der Code:Firefox kann den Fokus nicht auf den Textbereich setzen
<textarea autofocus="true" id="editable" name="editable"></textarea>
Wenn der Benutzer versucht, einige Daten einfügen, meinen Code leitet die Paste auf eine versteckte contenteditable div
. Diese verliert die Position der Einfügemarke, so vor Fokus wechseln, ich spare es mit:
var storedCaret = textarea.selectionStart;
Später, nachdem ich die notwendigen Transformationen durchgeführt haben, ich versuche, es abzurufen:
editable.focus();
editable.setSelectionRange(storedCaret, storedCaret);
window.setTimeout(function() {
document.execCommand("insertHTML", false, formattedText);
}, 50);
Dies funktioniert gut für Chrome (49.0.2623.87 m). Aber zu meinem immensen Frust, in Firefox (43.0.1) funktioniert die Paste nicht. Von meinem Debugging wird zu dem Zeitpunkt, zu dem execCommand ausgelöst wird, textarea#editable
korrekt als document.activeElement
ausgewählt, aber die Paste schlägt vollständig fehl.
jQuery ist eine akzeptable Lösung, aber ich möchte keine anderen Plugins verwenden.