2012-05-08 35 views
8

Po prostu wpadłem na dziwne zachowanie tekstu wielowierszowego w firefoxie przy użyciu wiązań knockout. Oto moje skrzypce: http://jsfiddle.net/NznVZ/.Tekst wielowierszowy jest wyświetlany jako pojedyncza linia w firefoxie przy użyciu powiązań knockoutjs

Mamy textarea i span z powiązaniem wartości/tekstu z tym samym obserwowalnym. Obecnie Chrome i IE wyświetlają tekst wielowierszowy w elemencie span, ale firefox nie (po prostu łączy kilka linii w 1).

Czy ktoś może wyjaśnić, co jest/gdzie jest problem? Może ktoś już napotkał na ten problem i ma rozwiązanie?

Z góry dziękuję z wyprzedzeniem

P.S. Firefox 12, IE 9, Chrome 18

+0

Testowałem z ff12 i nie było problemu. – xandy

+0

@xandy czy próbowałeś wstawiać podziały? Jeśli tak, w FF są łączone w zakresie, ale inne przeglądarki wstawiają właściwe BR –

+0

Próbowałem wstawić \ n w javascript, działa. Próbowałem nacisnąć klawisz Enter w polu tekstowym, działa. – xandy

Odpowiedz

20

Ustawianie stylu white-space: pre-wrap o rozpiętości uczyni to działa: http://jsfiddle.net/mbest/NznVZ/12/

Tutaj jest trochę tła. IE i Chrome konwertują nowe linie w ciągu znaków do elementów <br> w kodzie HTML, gdy tekst jest ustawiony przy użyciu innerText, czyli tego, czego używa Knockout. Firefox nie ma innerText, więc Knockout używa textContent, który nie wykonuje żadnej konwersji ciągu. (Co ciekawe, Chrome pasuje Firefox podczas korzystania styl white-space: pre-wrap).

IE:

<span>First line.<br>Second Line.<br>&nbsp;&nbsp;&nbsp;&nbsp; Third line preceded with 5 space characters.</span> 

Chrome (bez stylu white-space):

<span>First line.<br>Second Line.<br>  Third line preceded with 5 space characters.</span> 

Firefox i Chrome (z biało- space style):

+0

edytowane w celu dostarczenia podstawowych informacji o tym, dlaczego tak się dzieje. –

+0

wielkie dzięki za pomoc i wyjaśnienia :) – Andrey

+0

dziękuję bardzo !! –

-1

Jeśli chcesz rozwiązanie JavaScript: http://jsfiddle.net/9KAQX/

Jedyną zaletą jest to, że znaki "\ n" nie występują w przestrzeni.

+0

Działa poprawnie, chyba że Twój tekst zawiera specjalne znaki HTML, np. Mniejszy lub większy niż symbol. Spróbuj wpisać 3 <6, na przykład :) – eselk

Powiązane problemy