JCE / TinyMCE - Ciągle próbuje naprawić poprawny i nieprawidłowy kod HTML

9

Ze wszystkich edytorów Joomla, z których korzystaliśmy, JCE najlepiej odpowiada naszym celom i klientom. Ale z edytorem jest kilka problemów, które mogą powodować problemy, gdy coś kodujemy, potem przełącza się na wysiwyg i edytor próbuje „naprawić” nasz doskonale poprawny HTML.

Zanim zaczniesz zadawać pytania - tak, ustawiliśmy to, aby zezwalać na wszystkie te elementy, które JCE lubi ograniczać, i nie, NIE jest ustawione na sprawdzanie poprawności / czyszczenia HTML. Jedyne ograniczenia, jakie mamy, dotyczą wklejania treści do edytora.

Eksponat A:

<a href="#"></a>

To zniknie po przełączeniu edytora iz powrotem. Zastąpiony przez:

<p>&nbsp;</p>

Dowód B:

<a id="#nameofanchor"></a>

Zmiany w:

<p>&nbsp;</p>

Dowód C:

<div><a id="#nameofanchor"></a></div>

Zmiany w:

<div>&nbsp;</div>

Dowód D:

<a id="hello" class="link">Hello</a>

Zmiany w:

<p><a id="hello" class="link"></a>Hello</p>

Dowód E:

<a href="#">
<div>
<h2>Our Work</h2>
</div>
</a>

Zmiany w:

<p><a href="#"></a></p>
<div>
<h2><a href="#">Our Work</a></h2>
</div>
<p>&nbsp;</p>

Teraz chcemy użyć identyfikatora zamiast nazwy dla naszej kotwicy, ponieważ jest poprawny w HTML5, podczas gdy nazwa technicznie nie jest. Ponadto, w jakim wszechświecie id jest nieprawidłowym przypisaniem do łącza?

Poza tym, skoro teraz jest całkowicie uzasadnione zawinięcie div z linkami, dlaczego JCE też je usunie?

Czy to tylko ustawienie, którego mi brakuje? Czy ktoś ma jakiś wgląd w to, jak mogę korzystać z edytora, abyśmy mogli kodować tak, jak potrzebujemy w edytorze, ale nasi klienci nie mogą go zniszczyć, po prostu zapisując w wysiwyg?

Edycja: Testowałem to w Chrome, Firefox i Safari. Nie sądzę, że ma to coś wspólnego z przeglądarką.

Edycja: Testowałem to z ustawieniami kontenera. Zarówno pojemnik na akapity i akapit na Enter, jak i pojemnik Container i Div na enter powodują to. Pozostałe dwa, Brak kontenera i akapitu przy wejściu, Brak kontenera i podział linii przy wejściu, nie powodują tego. Problem w tym, że potrzebuję pierwszego ustawienia! O ile dobrze byłoby dać klientom wątpliwości, po prostu nie można im ufać, że wykonują instrukcje i dodają formatowanie akapitów do tekstu.

Potwierdzony: Dzieje się tak również z TinyMCE.

Tak więc - wiemy, co to powoduje - ustawienie Pojemnika na akapity - teraz jak sobie z tym poradzić, utrzymując to ustawienie przy życiu?

Faye
źródło
1
Cieszę się, że to nie tylko ja.
Craig
Po naszych wcześniejszych dyskusjach i stwierdzeniu, że pochodzi to z funkcji owijania elementów JCE, nie jestem pewien, o co tak naprawdę chodzi. Jeśli ufasz swojemu klientowi, że będzie mógł dodawać fragmenty HTML takie jak powyżej, przełączając stan edytora, dlaczego nie możesz im ufać, że otoczy ich zawartość odpowiednimi tagami <p>?
FFrewin
Nasi klienci nie dodają HTML. Piszemy HTML, używają strony edytora - jak tylko edytor zostanie przełączony, psuje nasz doskonale poprawny HTML.
Faye
W każdym razie, jeśli dasz klientowi dostęp do edycji strony pełnej HTML, to w ten czy inny sposób istnieje duża szansa, że ​​klient może zniszczyć Twój HTML. Co z użyciem Menedżera szablonów JCE lub innych tagów „makr”, które wykonają brudną robotę, dodając potrzebne znaczniki?
FFrewin

Odpowiedzi:

7

Używam edytora JCE na wszystkich naszych stronach, ale zaczęliśmy także instalować Sourcerer by NoNumbers. Daje to łatwy przycisk INSERT CODE edytorowi JCE, który chroni go przed modyfikacją.

http://www.nonumber.nl/extensions/sourcerer

YellowWebMonkey
źródło
DZIĘKUJĘ CI. Jest to idealne rozwiązanie, ponieważ na naszych urządzeniach zainstalowaliśmy już numer, ponieważ jest fantastyczny, nie wiedziałem, że to ma. To jest doskonałe.
Faye
1
Do dodawania HTML nie powinno być potrzeby używania Sourcerer.
BodgeIT
Aaa i jeszcze muszę, lub JCE usuwa idealnie poprawny kod HTML.
Faye,
2

Istnieją pewne tajne ustawienia dla JCE. Wiem, że następujące ustawienie przestaje &nbsp;być dodawane do pustych div, może być używane do czyszczenia pływaków, co powoduje problemy z wysokością linii podczas renderowania:

In the Editor Global Configuration, add:
remove_div_padding:1 
to Custom Configuration Variables. 

Spodziewałbym się, że jest więcej, które mogą kontrolować dowolny aspekt edytora.

BodgeIT
źródło
1

Myślę, że muszą to być ustawienia typografii w: Profil -> Parametry edytora -> Typografia . Spróbuj ustawić element kontenera i klawisz Enter na NoContainer i LineBreak na klawiszu Enter, aby sprawdzić, czy nadal stosuje on jakiekolwiek zmiany w html.

Pamiętaj również, że ustawienie sprawdzania poprawności HTML ma ustawienie dla każdego profilu edytora, a Joomla zapewnia również filtr globalny na stronie konfiguracji globalnej ustawionej przez grupę użytkowników. Upewnij się, że nie ma żadnych ustawień dla każdej grupy użytkowników.

FFrewin
źródło
Tak, byłem we wszystkich profilach redaktorów itp. Mam wszystko skonfigurowane poprawnie bez HTML. Zmiana pojemnika może go rozwiązać - ale spowoduje inny problem, równie problematyczny. Jeśli klient może dodać treść tekstową, która nie jest zawinięta w znaczniki akapitu, wówczas formatowanie tekstu będzie inne. My też tego nie chcemy. Przetestuję to, aby zobaczyć, czy powoduje to ten sam problem z kotwicą, ale jeśli chodzi o dodawanie samych tagów akapitu, jest to coś w stylu kursu.
Faye
Tak, to ustawienia kontenera, które to robią - ale, jak powiedziałem, jest to większy problem dla naszych klientów, którzy nie mogą wkleić i nie mają automatycznego zawijania tagów akapitu.
Faye
Myślę, że tak się dzieje, ponieważ twoje przykłady kodu zawierają podziały wierszy, co jest rodzajem „reguły” dla JCE tworzenia akapitów. Aby to osiągnąć, powinno istnieć takie kryterium. Czy Twój klient wklei takie fragmenty HTML w edytorze?
FFrewin
Nasi klienci nie będą używać HTML, ale nadal kodujemy za pomocą HTML za tym, co robią. Tworzymy dla nich obszary do wklejenia / wpisania prostej treści. Także - jeśli masz na myśli wpisanie html w jednym wierszu zamiast uporządkowania jak wyżej, również tego próbowałem. Otrzymuję dokładnie takie same wyniki.
Faye
0

To zachowanie nie jest unikalne dla JCE. TinyMCE zachowuje się w ten sam sposób. To zachowanie może nie być ograniczone do TinyMCE, może to być zachowanie DOM przeglądarki.

JCE ma problem z utrzymaniem pustych znaczników, zastosowana metoda polega na wstawieniu spacji.

https://github.com/widgetfactory/jce-editor/blob/master/editor/tiny_mce/plugins/cleanup/editor_plugin.js

Peter Wiseman
źródło
Nie będę kłamał, nie mam pojęcia, co to znaczy. Czy możesz to jeszcze trochę rozbić? Na co patrzę w tym łączu? Co masz na myśli podkładka ze spacją? Dodanie nieprzerwanego miejsca do powyższych przykładów kodu nie zmienia wyników końcowych, dokładnie to przetestowałem.
Faye
Zmieniłem domyślny edytor na TinMCE, ten, który jest fabrycznie zainstalowany z Joomla, i przetestowałem Dowód A. Usunęłem również tagi podczas przełączania między edytorem WYSIWYG i widokiem źródła. tj. To zachowanie nie wydaje się być unikalne dla JCE. Dlatego zastanawiam się, czy nie jest to również unikalne w TinyMCE, a być może to samo może się zdarzyć, gdy korzystasz z przeglądarki do edycji na miejscu. Odwołaniem do kodu JCE był wiersz 129, w którym między znacznikami początkowym i końcowym użyto niełamliwej spacji. To działa dla mnie zarówno w JCE, jak i TinyMCE. Dziwne.
Peter Wiseman