2017-03-16 24 views
5

Umieściłem pokrewną notatkę na How can I clean up Django bleach + CKeditor debris? o tym, jak usunąć naruszające puste akapity z Python/Django.Jak mogę zrezygnować z wstawiania pustych akapitów w CKEDITOR?

Chciałbym jednak bardziej bezpośrednio zapytać, czy program CKeditor umożliwia rezygnację z dodawania pustych akapitów lub usunąć wszystkie puste akapity przed przesłaniem.

Przykładem źródła HTML z jednym pustym programowo dodano paragraf (The wcięte linie są wcięte przez jedną kartę, nie spacjami):

<p> 
    This little bunny is <em>shy</em>, but also very affectionate.</p> 
<p> 
    &nbsp;</p> 
<p> 
    Would you like to meet her?</p> 

uzyskać dodany paragraf za uratować.

Jak mogę zapobiec, wykluczać itp. Dodanie pustych akapitów innych niż z inicjatywy użytkownika?

Dzięki,

+0

Jonathan, nie jest jasne, jak przedstawiciel zgłosić problem. Co dokładnie robisz, aby dodać ten pusty akapit? – SergGr

+0

Mam stronę admin Django. Kilka reprezentowanych pól otrzymuje widget TEXTAREA. Udało mi się hijaxować te pola, po zaimportowaniu programu CKeditor, wywołując pętlę iterującą po TEXTAREA za pomocą '' CKEDITOR.replace (textareas [index] .name); ''. – JonathanHayward

+0

Jeśli mam tylko jeden akapit, wszystko działa świetnie. Jeśli podzielę linię na dwa akapity i kliknę "Zapisz i kontynuuj edytowanie", przeniesie mnie ona do stron z pustym akapitem oddzielającym je; następnie za każdym razem otrzymuję jeden dodatkowy pusty akapit, klikając "Zapisz i kontynuuj edytowanie" lub równoważny. – JonathanHayward

Odpowiedz

2

Problem polega na tym, że usuwasz znaczniki otwierające i zamykające końcowy przed zapisaniem w DB, który pozostawia niedopasowane znaczniki HTML i dlatego nieprawidłowy HTML (... gdy masz więcej niż jeden blok p). Więc

<p>Something</p> 
<p>Something else</p> 

staje:

Something</p> // invalid html - closing tag with no corresponding opening tag 
<p>Something else // invalid html - opening tag with no corresponding closing tag 

CKEditor jest rzeczywiście próbuje naprawić nieprawidłowy HTML dla ciebie, gdy ładowane z powrotem do edytora.

Jeśli nie chcesz akapitów tagów Sugerowałbym użyciu opcji config config.autoParagraph = false; i/lub config.enterMode = CKEDITOR.ENTER_BR; (CKEditor użyje <br /> zamiast gdy użytkownik wpisze nową linię) tylko w zależności od wymagań.

Innym możliwym rozwiązaniem byłoby, aby zmienić swoją funkcję przed zapisać zrobić znajdowania i zamieniania wszystkich wystąpień '<p>' z '' i '</p>' z '<br />', przed podjęciem ostatecznej Usuń którejkolwiek spływu '<br />'.

Kroki powielać problem:

A. można przejść do http://sdk.ckeditor.com/samples/accessibilitychecker.html i kliknąć w przycisk Source i wklej następujący:

<p>Something</p> 
<p>Something else</p> 

B. Kliknij Source i wyświetli ten html poprawnie.

C. Kliknij Source ponownie, aby wrócić do trybu źródłowego i tylko 2 p elementy pokaże

D. Wyjąć otwarcia akapitów i znaczniki zamykające akapicie:

Something</p> // invalid html - closing tag with no corresponding opening tag 
<p>Something else // invalid html - opening tag with no corresponding closing tag 

E kliknij na Source dwa razy, aby wyrenderować wyjście, a następnie, aby zobaczyć dostosowane źródło:

<p>Something</p> 
<p>&nbsp;</p> 
<p>Something else</p> 
Powiązane problemy