Fügen Sie Text am Cursor in einem editierbaren Div ein
Ich habe eine contenteditable div, wo muss ich das einfügen von text an der Cursor-position,
Dies kann leicht getan werden in IE durch document.selection.createRange().text = "banana"
Gibt es eine ähnliche Art und Weise der Umsetzung dieser in Firefox/Chrome?
(Ich weiß, dass eine Lösung existiert hier , aber es kann nicht verwendet werden, contenteditable div, und sieht ungeschickt)
Danke!
Kommentar zu dem Problem
Wenn Sie möchten, um html einfügen an der cursor, siehe stackoverflow.com/questions/6690752/...
InformationsquelleAutor der Frage user314362 | 2010-05-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgende Funktion einfügen von text an der Cursor-position und löschen Sie die vorhandene Auswahl. Es funktioniert in allen mainstream-desktop-Browser:
UPDATE
Basierend auf Kommentar, hier finden Sie den code für das speichern und wiederherstellen der Auswahl. Vor dem anzeigen des Kontextmenüs aus, speichern Sie den Rückgabewert von
saveSelection
in eine variable und dann übergeben Sie die variable inrestoreSelection
auf restore wird die Selektion nach dem ausblenden des Kontextmenüs und vor dem einfügen von text.InformationsquelleAutor der Antwort Tim Down
window.getSelection()
.Selection.getRangeAt(0).insertNode()
hinzufügen ein textnode.Falls erforderlich, verschieben Sie die cursor-position hinter dem text Hinzugefügt, mit
Selection.modify()
. (Nicht genormt, aber diese Funktion wird unterstützt in Firefox, Chrome und Safari)InformationsquelleAutor der Antwort Martin Wantke
nur eine einfachere Methode mit jquery:
kopieren Sie den gesamten Inhalt des div -
var oldhtml=$('#elementID').html();
var tobejoined='<span>hii</span>';
//element with new html would be
$('#elementID').html(oldhtml+tobejoined);
einfach!
InformationsquelleAutor der Antwort Alireza Mn