Mit "HTML einfügen" nach Auswahl
Ich in der Lage sein möchten, doppelklicken Sie auf wählen Sie einigen text in einem div, die dann löst eine JavaScript-Funktion, die fügt einige HTML-nachdem Sie den ausgewählten text, ähnlich wie die 'edit/reply" - Funktion in Google Wave.
Habe ich bereits festgestellt, wie Sie zum auslösen einer Funktion auf Doppel-Klick, es ist die Lokalisierung der Auswahl und anschließend einfügen von HTML nach es dass ist das problem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die folgende Funktion fügt einem DOM-node (ein element oder text-Knoten) am Ende der Auswahl in allen gängigen Browsern (beachten Sie, dass Firefox erlaubt nun eine Mehrfachauswahl standardmäßig aktiviert; im folgenden wird nur die erste Auswahl):
Wenn Sie lieber legen Sie eine HTML-Zeichenkette:
Update 18. Januar 2012
Schließlich, hier ist eine version, die Einsätze HTML und behält die Auswahl (d.h. erweitert die Selektion um die ursprünglich ausgewählten Inhalt plus dem eingefügten Inhalt).
Live-demo: http://jsfiddle.net/timdown/JPb75/1/
Code:
Fenster.getSelection() erhalten Sie den ausgewählten text (Dokumentation).
Sie können die jQuery.nach() (Dokumentation) neu einfügen html nach einem element ein.
Sich auf Ihren ausgewählten text-Funktion aufrufen, haben Sie, um eine Schleife durch alle DOM-Elemente, überprüfen Ihre x&y-Position auf der aktuellen cursor-position - Holen Sie sich die nächsten Elements und das einfügen nach oder verwenden die Funktion .elementFromPoint(x,y) (Dokumentation)
Dies ist der beste Weg, ich kann derzeit denken. Es ist nicht perfekt, aber es ist irgendwo zu beginnen.
window.getSelection()
zurück nicht jede x -, y-KoordinatenIch weiß nicht, ob es möglich ist, aber wenn ich von einer partiellen Lösung.
Auf Ihre Doppelklick-Ereignis können Sie die event-Objekt und den Zugriff auf die Eigenschaft
target
.Dass das target-element, Sie können den ausgewählten text.
Nun das target-html-element und finden Sie den index des ausgewählten Textes und die Länge, Spritzen Sie Ihre html-Code auf der
index + length
position.Ich denke, dass Sie schon sah das problem, konnte es mit dem text an mehreren stellen. Um es zu lösen, die Sie haben könnten zu finden, die position des Cursors und zu vergleichen, um das element, ich weiß nicht, wie zu tun, dass...
Hoffe ich konnte ein wenig helfen.