web-dev-qa-db-fra.com

comment empêcher tinymce d'empêcher l'entrée de balises vides?

J'ai lu des tas de messages sur divers forums et ici sur SO, et je n'arrive toujours pas à empêcher tinymce de retirer les balises vides de la fin d'un bloc éditable.

Par exemple. Je saisis ceci:

<a href="blah">zzz</a>
<div class="floatClearer" style=""></div>

..et lors de l'aller-retour (en mode HTML ou hors du mode HTML), tinymce enlève l'intégralité du <div class="floatClearer" style=""></div>.

Selon divers conseils que j'ai trouvés, j'ai essayé ces choses, et plus encore:

  • supprimer le signe moins devant div dans mon valid_elements,

... et ces config. options:

  • verify_html : false,
  • extended_valid_elements : "div*",
  • extended_valid_elements : "div[*]",

Tout en rien. Y at-il un moyen d'empêcher cette action de décapage? Il y a d'autres endroits où j'ai besoin de balises vides (pas seulement dans cet exemple), alors s'il vous plaît, si vous le pouvez, donnez-moi une réponse spécifique à ma question, au lieu de suggérer que je n'utilise pas de balises vides.

21
govinda

Il y avait un bogue dans TinyMCE, et maintenant il est corrigé (dans v3.5.2). Merci à @Thariama !

Pour les futurs chercheurs: Utilisez l'option verify_html .

Cette option active ou désactive la fonctionnalité de nettoyage d'élément. Si vous définissez cette option sur false, tout le nettoyage des éléments sera ignoré, mais d'autres fonctionnalités de nettoyage, telles que la conversion d'URL, seront toujours exécutées.

Exemple d'utilisation:

tinyMCE.init({
    ...
    verify_html: false
});
14
naXa

Je tiens cela ici parce que je suis toujours me cogner dans cette questionTOUSl'heure sur les blogs WordPress (même maintenant, 2016) où Je dois utiliser des divs vides pour insérer Google Analytics, Google Translate et Google Tag Manager .

Le modèle typique est que vous ajoutez un endroit sur une page de blog où vous en avez besoin et la prochaine fois que vous revenez toucher la page avec l'éditeur de TinyMCE, whammo, bammo vos divs sont partis!

LeSEULEMENTchose que j'ai trouvé qui semble toujours fonctionner de manière fiable est quelque chose comme ce qui suit:

<div id="google_translate_element" style="text-align:right;"><span style="display:none;">ha_ha_I_beat_u_tinyMCE</span></div>
3
Cliff Ribaudo

Comme j'ai moi aussi des problèmes, j'ajoute ma brique - au-dessus de la réponse de Cliff Ribaudo.

Je recommande donc d'utiliser &nbsp; à l'intérieur de la balise vide, qui ne sera ni supprimée ni visible, pas même par les moteurs de recherche.

Faire comme si n'a pas été dépouillé sur mon tinyMCE: <div class="someclass">&nbsp;</div>

3
antoni

La solution pour moi était d'être extrême et d'étendre les éléments valides pour accepter TOUT, peut-être pas idéal mais le client est content

function override_mce_options($initArray) {
     $opts = '*[*]';
    $initArray['valid_elements'] = $opts;
    $initArray['extended_valid_elements'] = $opts;
    return $initArray;
}
add_filter('tiny_mce_before_init', 'override_mce_options');
1
nodws