2012-02-17 14 views
7

To jest skomplikowane! Pracuję z contentEditable w Chrome i mam problem z topieniem głowy. Kiedy naciśnie klawisz powrotu, Chrome wstawia nowy div do innerHTML. To jest piękne i eleganckie. Problem polega na tym, że linii podziału nie można nigdzie znaleźć w treści tekstowej div. Naprawdę potrzebuję wymyślić sposób, aby dodać podział wiersza do textContent w tym samym miejscu co div div w innerHTML.Dodaj tylko do linebreak do textContent lub innerText - w Chrome

Jakieś pomysły?

UPDATE:

mogę używać innerText ale podziały wierszy, które są tam po załadowaniu strony są ignorowane. Potrzebuję spójności jednej z tych metod. Innymi słowy, potrzebuję textContent, aby pokazać nowo wstawione podziały wierszy lub innerText, aby pokazać podziały wierszy, które istniały podczas ładowania strony.

Oto zaktualizowana demo:

function checkit() { 
 
    var c1 = document.getElementById('c1') 
 
    alert("TEXTCONTENT:\n" + c1.textContent + "\n\nINNERTEXT:\n" + c1.innerText + "\n\nINNERHTML:\n" + c1.innerHTML) 
 
}
div {padding: 20px; border-bottom: 1px solid #CCC;}
<div><a href="#" onclick="checkit()">check it</a></div> 
 

 
<div contentEditable="true" id="c1">click inside this <b>div</b>, 
 
press return and then press <b>check it</b> above</div>

+0

Możliwy duplikat [Jak mogę wstawić nowy wiersz/powrót karetki do elementu.tekstContent?] (Http://stackoverflow.com/questions/9980416/how-can-i-insert-new-line-carriage- return-into-an-element-textcontent) –

Odpowiedz

3

mam rozwiązać ten ładując inną zmienną do każdej sytuacji:

Na stronie obciążenia, używam textContent który utrzymuje podziały wiersza nienaruszone. Kiedy użytkownik zaczyna pisać, używam innerText, który rozpoznaje wstawione podziały strony. Proste instrukcje if wykonają lewę!

+5

Niestety "innerText" nie jest obsługiwane przez Firefox ... – adriantoine

+0

innerText jest teraz obsługiwany przez wszystkie przeglądarki: http://caniuse.com/#feat=innertext – cronoklee

4

To dlatego textContent nie jest świadomy styl. W rezultacie np. Wyświetla ukrytą zawartość.

Zmień c1.textContent na c1.innerText i wyświetli podział wiersza.

+0

Dzięki Dennis, ale teraz mam przeciwny problem, że linie podziału, które już istnieją w treści są ignorowane. Czy jest jakiś sposób na uzyskanie spójności tutaj? (patrz aktualizacja powyżej) – cronoklee

+0

Tak to powinno działać. Podział wiersza na stronie HTML nie zostanie wyświetlony. Zamiast tego użyj '
'. – Dennis

+0

dziękuję, to działa dla mnie –

Powiązane problemy