Ich habe Javascript, das HTML manipuliert, basierend auf dem, was der Benutzer ausgewählt hat. Für echte Browsern die Methoden, die ich bin mit Hebelwirkung der „Range“ Objekt als solches erhalten:Problem beim Erkennen von Zeilenumbrüchen im JavaScript-Bereich Objekt
var sel = window.getSelection();
var range = sel.getRangeAt(0);
var content = range.toString();
Der Inhalt Variable enthält alle ausgewählten Text, der gut arbeitet. Ich finde jedoch, dass ich die Zeilenumbrüche in der resultierenden Zeichenfolge nicht erkennen kann. Zum Beispiel:
Ausgewählter Text ist:
abc
def
ghi
range.toString() den Wert "abcdefghi".
Jede Suche nach Sonderzeichen gibt keine Instanz von \ n \ f \ r oder even \ s zurück. Wenn ich jedoch die Variable in ein editierbares Steuerelement schreibe, sind die Zeilenvorschübe wieder vorhanden.
Weiß jemand, was ich vermisse?
Es kann wichtig sein, dass diese Auswahlen und Manipulationen in bearbeitbaren divs sind. Das gleiche Verhalten zeigt sich in Chrome, FireFox und Opera. Überraschenderweise benötigt IE sowieso einen völlig anderen Code, aber da gibt es keine Probleme, außer dass es nur IE ist.
Vielen Dank.
Was meinst du mit 'range.toString() ergibt "abcdefghi"'? Was verwenden Sie, um diesen Wert zu untersuchen? Ein Debugger? aufmerksam()? –
Schreiben Sie 'range' Wert in editierbares Steuerelement oder' range.toString() '? – RaYell
@Ben Dunlap alle der oben genannten, mit externen Debuggern, Warnungen oder browserbasierte Debugger. Zum Beispiel, einen Haltepunkt mit Visual Studio zu treffen. @RaYell - Ich habe versucht, den Inhalt, der sich aus meinem Aufruf von range.toString() ergibt, in ein editierbares div zu schreiben, um zu beweisen, dass es die Newline-Informationen beibehielt. erste Antwort genagelt, obwohl die sel.toString() hat die Zeilenumbrüche, range.toString() nicht. Danke allen. – Timbo