Comment puis-je désactiver CKEditor pour m'obtenir chaque fois
, quand je ne les veux pas? J'utilise CKEditor avec l'adaptateur jQuery.
Je ne veux pas avoir de balises
.
Après quelques recherches, je pourrais faire la lumière sur ce problème - malheureusement, il n’existe pas de solution prête à l'emploi.
Dans l'éditeur CKE, il existe quatre manières de créer un espace sans pause (tout le monde en sait plus?):
Remplissage automatique des blocs vides . Cela peut être désactivé dans la configuration:
config.fillEmptyBlocks = false;
Insertion automatique en appuyant sur la touche TAB . Cela peut être désactivé dans la configuration:
config.tabSpaces = 0;
Conversion de doubles espaces en SPACE + NBSP. Ceci est un comportement de navigateur et ne sera donc pas corrigé par l'équipe de CKEditor . Il peut s'agir de serveurs fixes ou d'un javascript côté client onunload. Peut-être que ce php est un début:
preg_replace('/\s \s/ig', ' ', $text);
Par copier/coller. Si vous collez un UTF-8 no-break space ou deux espaces, CKEditor le convertira automatiquement. La seule solution que je vois ici est une regex comme ci-dessus. config.forcePasteAsPlainText = true;
n'aide pas.
Résumé: Pour supprimer tous les espaces insécables, vous devez écrire une fonction supplémentaire qui nettoie les entrées de l'utilisateur.
_ {Les commentaires et suggestions supplémentaires sont grandement appréciés! (J'utilise ckeditor 3.6.4)} _
Il y a une autre manière qu'un caractère d'espace insécable peut se produire. En entrant simplement un espace à la fin d'une phrase.
CKEditor échappe aux entités HTML de base avec les entités latines et grecques.
Ajoutez ces options de configuration pour éviter cela (vous pouvez également les ajouter dans votre fichier de configuration):
CKEDITOR.on( 'instanceCreated', function( event ) {
editor.on( 'configLoaded', function() {
editor.config.basicEntities = false;
editor.config.entities_greek = false;
editor.config.entities_latin = false;
editor.config.entities_additional = '';
});
});
Ces options empêcheront CKEditor d’échapper à nbsp gt lt amp ' "
un autre caractère latin et grec.
Sources: http://docs.ckeditor.com/#!/api/CKEDITOR.confighttp://docs.ckeditor.com/source/plugin48.html#CKEDITOR- config-cfg-basicEntities
Essayer:
config.basicEntities = false;
pour moi corrigé le problème.
dans config.js :
CKEDITOR.editorConfig = function( config ) {
config.enterMode = CKEDITOR.ENTER_BR; // <p></p> to <br />
config.entities = false;
config.basicEntities = false;
};
Cela fonctionne pour moi, après que vous puissiez imprimer du texte avec php: html_entity_decode( $someText )
;
J'ai remarqué que certaines opérations d'édition de texte, telles que la suppression d'un caractère (en appuyant sur le bouton Retour arrière), divisent le nœud de texte modifié en deux. Frapper la barre d'espace à la fin de ce nouveau nœud de texte crée toujours
au lieu de l'espace normal. J'appelle normalize()
http://www.w3schools.com/jsref/met_node_normalize.asp pour modifier l'élément après le changement:
CKEDITOR.on('instanceReady', function (ck) {
ck.editor.on("change", function (e) {
var sel = ck.editor.getSelection();
if (sel) {
var selected = sel.getStartElement();
if (selected && selected.$)
sel.getStartElement().$.normalize();
}
});
});
Ceci est une mauvaise solution
config.basicEntities = false;
<script type="text/javascript" src="/scripts/redactor/ckeditor/ckeditor.js"></script>
<p> </p>
ne peuvent pas spécifier d'indentation dans le texte car le caractère
sera supprimé (config.fillEmptyBlocks = true;).C'est la bonne solution
$text = preg_replace("#([^>]) #ui", "$1 ", $text);
sur un espace, à l'exception de ceux se trouvant à l'intérieur de la balise comme <p> </p>
.J'avais déjà eu à jouer avec config.js, donc pour réparer '?' montrant dans safari je me suis retrouvé avec 3 lignes dans config.js
config.fillEmptyBlocks = function (element) {
return true; // DON'T DO ANYTHING!!!!!};
config.entities = false;
config.basicEntities = false;
J'ai eu les mêmes problèmes pour créer des tables. Ce que j’ai vu, c’est que si j’ai créé les tables avec la règle css align="left"
, les <p> </p>
sont ajoutés, mais si j’ai modifié la règle css en align="center"
, je pouvais éditer les paragraphes et ils n’ont pas été rajoutés.