Mam trochę javascript, który manipuluje html na podstawie tego, co wybrał użytkownik. Dla prawdziwych przeglądarek metody Używam dźwigni „zasięgu” obiekt, otrzymany jako takie:Wykrywanie problemu Newlines w zakresie JavaScript Object Object
var sel = window.getSelection();
var range = sel.getRangeAt(0);
var content = range.toString();
zmienna Zawartość zawiera wszystkie zaznaczonego tekstu, który działa dobrze. Jednak stwierdzam, że nie mogę wykryć nowych linii w wynikowym ciągu. Na przykład:
Wybrany tekst jest:
abc
def
ghi
range.toString() ma wartość "abcdefghi".
Wyszukiwanie na znakach specjalnych nie zwraca żadnej instancji \ n \ f \ r ani nawet \ s. Jeśli jednak wypiszę zmienną do edytowalnego elementu sterującego, kanały liniowe są ponownie obecne.
Czy ktoś wie, czego mi brakuje?
Może być istotne, że te wybory i manipulacje są na edytowalnych elementach div. Takie samo zachowanie jest widoczne w Chrome, FireFox i Operze. Zaskakująco IE potrzebuje zupełnie innego kodu, ale nie ma tam żadnych problemów, poza tym, że to po prostu IE.
Wielkie dzięki.
Co rozumiesz przez "range.toString() oznacza" abcdefghi "? Czego używasz do badania tej wartości? Debugger? alarm()? –
Czy piszesz wartość 'range' do edytowalnego sterowania lub' range.toString() '? – RaYell
@Ben Dunlap wszystkie powyższe, przy użyciu zewnętrznych debugerów, alertów lub przeglądarek opartych na debuggerach. Na przykład trafienie w punkt przerwania za pomocą Visual Studio. @RaYell - Próbowałem napisać zawartość wynikającą z mojego wywołania range.toString() do edytowalnego div, aby udowodnić, że zachował on informacje o nowej linii. Pierwsza odpowiedź przybita to jednak, sel.toString() ma nowe linie, range.toString() nie. Dzięki wszystkim. – Timbo