JCE / TinyMCE - Versucht weiterhin, gültigen und ungültigen HTML-Code zu korrigieren


9

Von allen Joomla-Editoren, die wir verwendet haben, hat JCE unsere Zwecke und Kunden am besten erfüllt. Aber es gibt ein paar Probleme mit dem Editor, die Probleme verursachen können, wenn wir etwas codieren. Dann wird es auf wysiwyg umgeschaltet und der Editor versucht, unser perfekt gültiges HTML zu "reparieren".

Bevor Sie Fragen stellen - ja, wir haben es so eingestellt, dass alle Elemente, die JCE gerne einschränkt, zugelassen werden, und nein, es ist NICHT so eingestellt, dass es das HTML validiert / bereinigt. Die einzigen Einschränkungen, die wir haben, sind das Einfügen von Inhalten in den Editor.

Anlage A:

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

Dies verschwindet beim Umschalten des Editors und zurück. Ersetzt mit:

<p>&nbsp;</p>

Anlage B:

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

Änderungen an:

<p>&nbsp;</p>

Anlage C:

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

Änderungen an:

<div>&nbsp;</div>

Anlage D:

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

Änderungen an:

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

Anlage E:

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

Änderungen an:

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

Jetzt möchten wir id anstelle von name für unseren Anker verwenden, da dies unter HTML5 gültig ist, während name technisch nicht der Fall ist. In welchem ​​Universum ist id eine ungültige Zuordnung zu einem Link?

Und jetzt, da es absolut legitim ist, ein Div mit Links zu versehen, warum sollte JCE diese auch entfernen?

Fehlt mir nur diese Einstellung? Hat jemand einen Einblick, wie ich den Editor verwenden kann, damit wir nach Bedarf im Editor codieren können, aber unsere Kunden können ihn nicht einfach durch Speichern in wysiwyg zerstören?

Bearbeiten: Ich habe dies in Chrom, Firefox und Safari getestet. Denken Sie nicht, dass es etwas mit dem Browser zu tun hat.

Bearbeiten: Ich habe dies mit den Containereinstellungen getestet. Dies verursachen sowohl Paragraph Container & Paragraph on Enter als auch Div Container & Div on Enter. Die anderen beiden, Kein Container & Absatz bei Eingabe, Kein Container & Zeilenumbruch bei Eingabe, verursachen dies nicht. Problem ist - ich brauche die erste Einstellung! So großartig es auch wäre, Kunden den Vorteil des Zweifels zu geben, ihnen kann einfach nicht vertraut werden, Anweisungen zu befolgen und ihrem Text Absatzformatierungen hinzuzufügen.

Bestätigt: Dies passiert auch mit TinyMCE.

Also - wir wissen, was dies verursacht - die Paragraph Container-Einstellung - wie können wir sie nun umgehen, während wir diese Einstellung am Leben erhalten?


1
Ich bin froh, dass es nicht nur ich bin.
Craig

Nach unseren vorherigen Diskussionen und der Schlussfolgerung, dass dies von der JCE-Elementumbruchfunktion herrührt, bin ich mir nicht sicher, was dies tatsächlich betrifft. Wenn Sie Ihrem Kunden vertrauen, dass er HTML-Snippets wie die oben genannten hinzufügen kann, indem Sie den Editorstatus umschalten, warum vertrauen Sie ihm dann nicht, dass er seinen Inhalt mit den entsprechenden <p> -Tags umschließt?
FFrewin

Unsere Kunden fügen kein HTML hinzu. WIR schreiben HTML, sie verwenden die Editorseite - sobald der Editor umgeschaltet wird, zerstört dies unser perfekt gültiges HTML.
Faye

In jedem Fall besteht eine große Chance, dass der Kunde Ihr HTML zerstört, wenn Sie dem Kunden auf die eine oder andere Weise Bearbeitungszugriff auf eine Seite voller HTML gewähren. Was ist mit der Verwendung des JCE-Vorlagen-Managers oder anderer "Makro" -Tags, die den schmutzigen Job beim Hinzufügen des benötigten Markups erledigen?
FFrewin

Antworten:


7

Ich verwende JCE Editor auf allen unseren Websites, aber wir haben auch damit begonnen, Sourcerer von NoNumbers zu installieren. Dies gibt dem JCE-Editor eine einfache Schaltfläche INSERT CODE, die ihn vor Änderungen schützt.

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


VIELEN DANK. Das ist perfekt, wir haben bereits keine Nummer auf unseren Sachen installiert, weil es fantastisch ist, ich wusste nicht, dass es das hatte. Dies ist perfekt.
Faye

1
Es sollte nicht erforderlich sein, Sourcerer zum Hinzufügen von HTML zu verwenden.
BodgeIT

Aaaund noch muss ich, oder JCE streift perfekt gültiges HTML aus.
Faye

2

Es gibt einige geheime Einstellungen für JCE. Ich weiß, dass die folgenden Einstellungen &nbsp;nicht mehr zu leeren Divs hinzugefügt werden, möglicherweise zum Löschen von Floats, was beim Rendern zu Problemen mit der Zeilenhöhe führt:

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

Ich würde erwarten, dass es mehr gibt, die jeden Aspekt des Editors steuern können.


1

Ich denke, es müssen die Typografieeinstellungen sein in: Profil -> Editorparameter -> Typografie . Versuchen Sie, den Schlüssel Container Container & Enter auf NoContainer & LineBreak bei Enter zu setzen, um festzustellen, ob noch Änderungen an Ihrem HTML-Code vorgenommen werden.

Denken Sie auch daran, dass die HTML-Validierungseinstellung für jedes Editorprofil eine Einstellung hat und dass Joomla auch einen globalen Filter auf der von der Benutzergruppe festgelegten globalen Konfigurationsseite bereitstellt. Stellen Sie sicher, dass für jede Benutzergruppe keine Einstellungen vorhanden sind.


Ja, ich war in allen Editorprofilen usw. Ich habe alles für kein HTML richtig eingerichtet. Das Ändern des Containers könnte das Problem lösen - aber es wird ein anderes Problem verursachen, das ebenso problematisch ist. Wenn ein Client Textinhalte hinzufügen kann, die nicht in Absatz-Tags eingeschlossen sind, unterscheidet sich die Formatierung seines Texts. Das wollen wir auch nicht. Ich werde es testen, um festzustellen, ob dies das gleiche Problem mit dem Anker verursacht, aber was Absatz-Tags betrifft, die sich selbst hinzufügen, ist das eine Art Par für den Kurs.
Faye

Ja, es sind die Containereinstellungen, die dies tun - aber wie gesagt, es ist ein größeres Problem für unsere Kunden, ihren Inhalt nicht einfügen zu können und ein automatisches Absatz-Tag umbrechen zu lassen.
Faye

Ich denke, dies geschieht, weil Ihre Codebeispiele Zeilenumbrüche enthalten. Dies ist eine Art "Regel" für JCE, um die Absätze zu erstellen. Es sollte ein solches Kriterium geben, um dies zu erreichen. Wird Ihr Kunde solche HTML-Schnipsel in den Editor einfügen?
FFrewin

Unsere Kunden werden kein HTML verwenden, aber wir codieren immer noch mit HTML hinter dem, was sie tun. Wir erstellen Bereiche, in die sie geraden Inhalt einfügen / eingeben können. Auch - wenn Sie meinen, HTML in einer Zeile einzugeben, anstatt wie oben organisiert, habe ich das auch versucht. Ich bekomme genau die gleichen Ergebnisse.
Faye

0

Dieses Verhalten gilt nicht nur für JCE. TinyMCE verhält sich genauso. Dieses Verhalten ist möglicherweise nicht auf TinyMCE beschränkt, sondern kann ein Browser-DOM-Verhalten sein.

JCE macht sich tatsächlich die Mühe, einige leere Tags zu behalten. Die angewandte Methode besteht darin, ein Leerzeichen einzufügen.

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


Ich werde nicht lügen, ich habe keine Ahnung, was das bedeutet. Kannst du es noch ein bisschen aufschlüsseln? Was schaue ich in diesem Link? Was meinst du mit einem Leerzeichen? Das Hinzufügen eines nicht unterbrechenden Leerzeichens zu den obigen Codebeispielen ändert nichts an den Endergebnissen. Ich habe dies gründlich getestet.
Faye

Ich habe meinen Standardeditor auf TinMCE umgestellt, den mit Joomla vorinstallierten, und Exhibit A getestet. Außerdem wurden die Tags beim Wechsel zwischen den Editoransichten WYSIWYG und Source entfernt. dh Dieses Verhalten scheint nicht nur für JCE zu gelten. Daher frage ich mich, ob dies auch nicht nur für TinyMCE gilt, und möglicherweise passiert dasselbe, wenn der Browser die Möglichkeit bietet, eine direkte Bearbeitung durchzuführen. Die JCE-Code-Referenz war Zeile 129, in der ein nicht unterbrechendes Leerzeichen zwischen den Start- und End-Tags verwendet wird. Das funktioniert bei mir sowohl in JCE als auch in TinyMCE. Seltsam.
Peter Wiseman
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.