web-dev-qa-db-fra.com

JCE / TinyMCE - Continue d'essayer de corriger les codes HTML valides et invalides

Parmi tous les éditeurs Joomla que nous avons utilisés, JCE convient le mieux à nos objectifs et à nos clients. Mais il y a quelques problèmes avec l'éditeur qui peuvent causer des problèmes lorsque nous codons quelque chose, puis il est basculé sur wysiwyg et l'éditeur tente de "réparer" notre code HTML parfaitement valide.

Avant de poser des questions - oui, nous l’avons configuré pour autoriser tous ces éléments que JCE aime restreindre, et non, il n’EST PAS configuré pour valider/nettoyer le code HTML. Les seules restrictions que nous avons concernent le collage de contenu dans l'éditeur.

Pièce A:

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

Cela disparaîtra sur l'éditeur de bascule et inversement. Remplacé par:

<p>&nbsp;</p>

Pièce B:

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

Changements à:

<p>&nbsp;</p>

Pièce C:

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

Changements à:

<div>&nbsp;</div>

Pièce D:

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

Changements à:

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

Pièce E:

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

Changements à:

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

Maintenant, nous voulons utiliser id au lieu de name pour notre ancre, car elle est valide sous HTML5, alors que techniquement, name ne l’est pas. De plus, dans quel univers l'id est-il une assignation invalide à un lien?

En outre, maintenant qu'il est tout à fait légitime d'envelopper une div avec des liens, pourquoi JCE les éliminerait-elle également?

Est-ce juste un réglage qui me manque? Quelqu'un a-t-il une idée de la manière dont je peux utiliser l'éditeur pour pouvoir coder comme nous en avons besoin dans l'éditeur, mais nos clients ne peuvent pas le détruire simplement en enregistrant dans wysiwyg?

Edit: j'ai testé cela en chrome, firefox et safari. Ne pensez pas que cela a quelque chose à voir avec le navigateur.

Edit: j'ai testé cela avec les paramètres du conteneur. Paragraphe Container et Paragraphe sur Entrée et Div Container & Div sur Enter causent cela. Les deux autres, No container & Paragraph sur enter, No Container & linebreak sur enter, ne le provoquent pas. Le problème est - j'ai besoin du premier réglage! Même s'il serait bien de donner aux clients le bénéfice du doute, on ne peut simplement pas leur faire confiance pour suivre les instructions et ajouter une mise en forme de paragraphe à leur texte.

Confirmé: Cela se produit également avec TinyMCE.

Donc, nous savons ce qui le cause, le paramètre de conteneur de paragraphe, comment pouvons-nous le contourner tout en maintenant ce paramètre en vie?

9
Faye

J'utilise JCE Editor sur tous nos sites, mais nous avons également commencé à installer Sourcerer by NoNumbers. Cela donne un bouton facile INSERT CODE à l'éditeur JCE qui le protège contre la modification.

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

7
YellowWebMonkey

Il existe certains paramètres secrets pour JCE. Je sais que le réglage suivant s’arrête &nbsp; étant ajouté aux divs vides, peut-être utilisé pour effacer les flottants, ce qui provoque des problèmes de hauteur de ligne lors du rendu:

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

Je m'attendrais à ce qu'il y en ait plus qui peuvent contrôler n'importe quel aspect de l'éditeur.

2
BodgeIT

Je pense que ce doit être les paramètres de typographie dans: Profil -> Paramètres de l'éditeur -> Typographie. Essayez de définir NoContainer & LineBreak on Enter sur la clé Container Element & Enter Key pour voir s’il applique toujours des modifications à votre code HTML.

N'oubliez pas non plus que le paramètre Validation HTML est défini pour chaque profil d'éditeur et que Joomla fournit également un filtre global dans la page de configuration globale définie par le groupe d'utilisateurs. Assurez-vous qu'il n'y a pas de paramètres pour chaque groupe d'utilisateurs.

1
FFrewin

Ce comportement n'est pas propre à JCE. TinyMCE se comporte de la même manière. Ce comportement peut ne pas être limité à TinyMCE, il pourrait s'agir d'un comportement DOM du navigateur.

JCE se donne la peine d'essayer de conserver des balises vides. La méthode utilisée consiste à remplir d'un espace.

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

0
Peter Wiseman