• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Konwersja tekstu na HTML - przejście do nowej linii

Object Storage Arubacloud
0 głosów
921 wizyt
pytanie zadane 25 lutego 2017 w JavaScript przez Informatykier Nowicjusz (170 p.)

Pracuję nad swoistym edytorem tekstu w przeglądarce. Mój cel to pozwolić wpisywać tekst w jednym, edytowalnym divie i nadawać mu formatowanie przy pomocy odpowiednich przycisków (przykład zawiera przycisk od pogrubiania "Bold"). Inny przycisk ma sprawić, by wpisany tekst został przerobiony w taki sposób, by wprowadzone formatowania zostały przedstawione w formie HTML (czyli jak pogrubimy część tekstu, to ta cześć będzie między <b></b>). Taka wersja ma pojawić się w divie niżej. Obecnie doszedłem do czegoś takiego: Click! Niestety, jeżeli dodam tekst w nowej linii przy pomocy Entera, to zostaje on wstawiony miedzy tagi <div></div>, a na końcu ma jeszcze tag <br>. Dodatkowo jest napisany w tej samej linii, co tekst poprzedni, a nie w nowej jak to powinno być. Próbowałem coś z tym zrobić przy pomocy replace(), ale bez większego skutku. 

Czy ktoś mógłby mi doradzić, z której strony mam to ugryźć, żeby otrzymać spodziewany efekt? Zaznaczam tylko, że chciałbym to zrobić przy pomocy czystego javascripta, a nie jquery.

komentarz 25 lutego 2017 przez niezalogowany

Będąc przy temacie wysiwygów: ContentEditable — The Good, the Bad and the Ugly - dobry artykuł

komentarz 27 lutego 2017 przez Informatykier Nowicjusz (170 p.)
Trochę posmutniałem na wieść, że div z ContentEditable to nie jest najlepsze rozwiązanie. Ale i tak dzięki!
komentarz 27 lutego 2017 przez niezalogowany
Jest, po prostu stworzenie rozbudowanego edytora to trudne zadanie.

2 odpowiedzi

+1 głos
odpowiedź 25 lutego 2017 przez niezalogowany

wstawiony miedzy tagi <div></div>, a na końcu ma jeszcze tag <br>

<div><br> - wywal to w kosmos regexem

</div> zamień na \n

Do .codeArea dodaj white-space: pre, żeby 'poprawnie' wyświetlać \n

0 głosów
odpowiedź 25 lutego 2017 przez ScriptyChris Mędrzec (190,190 p.)

Coś takiego?

function makeCode() {
  var write = document.querySelector(".write");
  var divInsideWrite = write.querySelector('div');
  
  if (divInsideWrite) {
    var newLineTag = document.createElement('br');
    write.insertBefore(newLineTag, divInsideWrite);
    divInsideWrite.outerHTML = divInsideWrite.innerHTML;
  }
  document.querySelector(".codeArea").textContent = write.innerHTML;
}

Sprawdzasz czy <div class="write"> zawiera w sobie innego diva (zmienna divInsideWrite). Jeśli tak,to tworzysz element <br> i umieszczasz go przed divInsideWrite. Następnie podmieniasz całego divInsideWrite tylko jego zawartością (czyli "kasujesz" tag <div> zostawiając tylko jego wewnętrzny kod HTML). Na końcu jako textContent (czyli wyświetlasz kod HTML w postaci "oryginalnej") umieszczasz zawartość <div class="write">

Zauważ, że zastosowanie textContent zamiast innerHTML powoduje ignorowanie semantycznego znaczenia danego tagu - cały element wypisze się w formie tekstowej.

Podobne pytania

0 głosów
2 odpowiedzi 581 wizyt
pytanie zadane 2 listopada 2020 w Python przez Ganci Użytkownik (670 p.)
0 głosów
3 odpowiedzi 3,285 wizyt
0 głosów
3 odpowiedzi 905 wizyt
pytanie zadane 18 października 2015 w JavaScript przez ScriptyChris Mędrzec (190,190 p.)

92,573 zapytań

141,423 odpowiedzi

319,648 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...