Ich habe also ein contenteditable div in meiner Rails-App und muss in der Lage sein, ein kleines Popup über dem Text anzuzeigen, wenn es hervorgehoben ist. Derzeit habe ich Code, der funktioniert, und es zeigt den markierten Text in einer Warnung an. Die Funktion wird jedoch bei mouseup ausgeführt. Wenn Sie also in das div klicken, um mit der Eingabe oder Hervorhebung zu beginnen, wird eine leere Warnung ausgelöst.
Hier ist mein Code:
%Vor%Wie verhindere ich, dass jQuery die Funktion ausführt, wenn der Benutzer in den contentEditable div klickt? Ich möchte nur, dass es ausgeführt wird, wenn der aktuelle Text markiert ist.
Sie können window.getSelection().anchorOffset
und window.getSelection().extentOffset
vergleichen, um zu sehen, ob sie gleich sind. Wenn sie es sind, dann war es nur ein normaler Klick.
Der folgende Befehl gibt "true" zurück, wenn nichts ausgewählt ist.
Inspiriert von @Tarun Dugar. Aber hat nicht in allen Browsern funktioniert. Das Folgende hat funktioniert.
%Vor%Es gibt das Ereignis "selectstart", das ausgelöst wird, wenn der Benutzer die Auswahl startet. Es gibt kein Auswahl-Ende-Ereignis, aber Sie können nach dem Ereignis "selectstart" nach mouseup-Ereignissen suchen, um sicherzustellen, dass die Auswahl stattgefunden hat.
Bearbeiten:
Check - HTML-Inhalt Editierbares div: Text-Ereignis auswählen
Tags und Links javascript html jquery html5 contenteditable