Désactiver les balises enfermant dans CKEditor 3.0
Est-il possible de désactiver l'enfermement automatique de tout le contenu écrit dans
dans CKEditor 3.x?J'ai essayé
CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;
Mais cela change simplement les sauts de ligne en ligne en
tout en laissant le paragraphe englobant.
En cours d'écriture "Test" produit cette sortie
<p>
Test</p>
Mais je veux que ce soit simplement
Test
Existe-t-il une propriété de configuration pour cela ou un autre éditeur en ligne serait-il mieux adapté à cela?
11 réponses
CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;
- cela fonctionne parfaitement pour moi.
Avez - vous essayé de vider le cache de votre navigateur-c'est parfois un problème.
Vous pouvez également le vérifier avec l'adaptateur jQuery:
<script type="text/javascript" src="/js/ckeditor/ckeditor.js"></script>
<script type="text/javascript" src="/js/ckeditor/adapters/jquery.js"></script>
<script type="text/javascript">
$(function() {
$('#your_textarea').ckeditor({
toolbar: 'Full',
enterMode : CKEDITOR.ENTER_BR,
shiftEnterMode: CKEDITOR.ENTER_P
});
});
</script>
mise à jour selon le commentaire de @Tomkay:
Depuis la version 3.6 de CKEditor, vous pouvez configurer si vous voulez que le contenu en ligne soit automatiquement enveloppé avec des balises comme <p></p>
. C'est la bonne réglage:
CKEDITOR.config.autoParagraph = false;
Source: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.autoParagraph
Sur internet, les gens ont remarqué que la configuration de la configuration.entrermode à CKEDITOR.ENTER_BR supprime les balises de paragraphe d'emballage de CKEditor. Il est à noter que le paramètre modifie le comportement de la touche Entrée pour insérer des sauts de ligne plutôt que des paragraphes, ce qui n'est pas souhaitable.
Voir: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.enterMode " il est recommandé d'utiliser le CKEDITOR.ENTER_P en raison de sa valeur sémantique et exactitude."
Cependant, le paramètre qui est conçu pour supprimer ce paragraphe initial, config.autoParagraph, n'est pas non plus conseillé, car il introduit des "problèmes d'utilisabilité imprévisibles" car l'éditeur veut vraiment un élément de bloc de niveau supérieur.
Voir: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.autoParagraph
La magie se produit sur wysiwygarea / plugin.js, ligne 410, où l'éditeur sélectionne l'élément de bloc par défaut en fonction de config.enterMode. Une option de configuration pour changer l'élément de bloc par défaut nous permettrait de commencer par un div, mais nous continuerions à obtenir plus de divs à chaque entrée, sauf si nous changions le format de paragraphe via le menu.
Voir: http://docs.cksource.com/ckeditor_api/symbols/src/plugins_wysiwygarea_plugin.js.html
Il serait possible de supprimer la balise de paragraphe d'emballage avec un post-traitement (soit sur le serveur ou dans L'événement GetData de CKEditor), mais cela nous amène à le même problème que la désactivation de l'autoParagraph: il n'y a pas de bloc de niveau supérieur.
Je dirais plutôt qu'il n'y a pas une bonne solution, mais plutôt une poignée de demi-solutions, que d'accepter la modification de la configuration.enterMode comme solution canonique.
Essayez ceci dans config.js
CKEDITOR.editorConfig = function( config )
{
config.enterMode = CKEDITOR.ENTER_BR;
config.shiftEnterMode = CKEDITOR.ENTER_BR;
};
Trouvé!
Ckeditor.ligne js # 91 ... rechercher
B.config.enterMode==3?'div':'p'
Changer pour
B.config.enterMode==3?'div':''
(PAS DE P!)
Videz votre cache et BAM!
Faites-en votre config.code de fichier js
CKEDITOR.editorConfig = function( config ) {
// config.enterMode = 2; //disabled <p> completely
config.enterMode = CKEDITOR.ENTER_BR // pressing the ENTER KEY input <br/>
config.shiftEnterMode = CKEDITOR.ENTER_P; //pressing the SHIFT + ENTER KEYS input <p>
config.autoParagraph = false; // stops automatic insertion of <p> on focus
};
Je fais quelque chose dont je ne suis pas fier comme solution de contournement. Dans mon servlet Python qui enregistre réellement dans la base de données, je fais:
if description.startswith('<p>') and description.endswith('</p>'):
description = description[3:-4]
Modifiez la source (ou désactivez le texte enrichi) et remplacez la balise p par un div. Ensuite, Stylez la div comme vous le souhaitez.
CkEditor n'ajoutera aucun élément wrapper lors de la prochaine soumission car vous avez la div.
(cela a résolu mon problème, j'utilise Drupal et j'ai besoin de petits extraits de html que l'éditeur a toujours ajouté, mais le reste du temps je veux la balise p d'emballage).
if (substr_count($this->content,'<p>') == 1)
{
$this->content = preg_replace('/<\/?p>/i', '', $this->content);
}
Faites-en votre config.code de fichier js
CKEDITOR.editorConfig = function( config ) {
// config.enterMode = 2; //disabled <p> completely
config.enterMode = CKEDITOR.ENTER_BR // pressing the ENTER KEY input <br/>
config.shiftEnterMode = CKEDITOR.ENTER_P; //pressing the SHIFT + ENTER KEYS input <p>
config.autoParagraph = false; // stops automatic insertion of <p> on focus
};
Définir une telle configuration:
CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR
CKEDITOR.config.forcePasteAsPlainText = true
Dans VS2015, cela a fonctionné pour transformer la touche Entrée en <br>
myCKEControl.EnterMode = CKEditor.NET.EnterMode.BR
Personnellement, je ne me soucie pas si mon texte résultant a seulement <br>
et non <p>
. Il rend parfaitement bien et il ressemble à ce que je veux. En fin de compte, il fonctionne.