¿Cómo puedo desactivar CKEditor para hacerme cada vez  , cuando no quiero que ellos? Estoy usando CKEditor con jQuery adaptador.

No quiero tener ningún   etiquetas.

  • ¿Cómo va a saber que quieres y que no quieres? ¿Quieres eliminar a todos ellos, o reducir múltiplos, o algo más? Cómo son, cómo llegar en el primer lugar?
  • Yo no quiero que ellos se agregan.. a todos ellos
  • OK, solo quería aclarar. Así que cuando un usuario presiona la barra de espacio, nunca va a agregar más de un espacio? En otras palabras, usted no quiere tener que hacer esto en el lado del servidor, ¿correcto? Supongo que la mejor manera sería a su vez todos ellos en regular espacios (sólo en caso de que algunos se van a separar dos palabras), pero no estoy seguro de cómo hacerlo con ckeditor específicamente.
  • Cuando me carga algo de html, ir a la wysywyg parte del editor, a continuación, volver a la parte html del editor – es la adición nbsp etiquetas, para mucho de los lugares, yo sé por qué se añade, he buscado sobre el problema, pero no hay solución funcionó
  • También agrega   en el vacío de las celdas de la tabla que rompe algunas de correo electrónico diseños.
InformationsquelleAutor user969724 | 2012-03-16

10 Comentarios

  1. 51

    Después de algunas investigaciones que podría arrojar algo de luz sobre esta cuestión – por desgracia, no existe el fuera-de-la-caja de solución.

    En el CKEditor hay cuatro formas en que un no-break espacio puede ocurrir (alguien sabe más?):

    1. Llenado automático de bloques vacíos. Esto se puede desactivar en la configuración:

      config.fillEmptyBlocks = false;
    2. Inserción automática al pulsar tecla TAB. Esto se puede desactivar en la configuración:

      config.tabSpaces = 0;
    3. La conversión de espacios del doble de ESPACIO+NBSP. Este es un navegador de comportamiento y de este modo no se fija por el CKEditor equipo. Podría ser fijo serverside o por un clientside javascript onunload. Tal vez esto de php es un comienzo:

      preg_replace('/\s \s/ig', ' ', $text);
    4. Por copy & paste. Si pega un UTF-8 no-break espacio o doble-espacios CKEditor va a convertir de forma automática. La única solución que yo veo aquí es hacer una expresión regular como en el anterior. config.forcePasteAsPlainText = true; no ayuda.

    Resumen: Para deshacerse de todos los no-break espacios que necesita para escribir una función adicional que limpia la entrada del usuario.

    Comentarios y sugerencias son más que bienvenidas! (Estoy usando ckeditor 3.6.4)

    • config.fillEmptyBlocks = false; se ocupa de   auto-inserta en vacío las celdas de la tabla. Gracias!
    • config.fillEmptyBlocks = false; No es detener el problema para mí
    • Eureka! Funcionó!!! config.fillEmptyBlocks = false; xD
    • Webkit error cuando de formatear o borrar la mitad de la palabra, consulte esta CK-venta de por ejemplo-las descripciones.
    • Creo que tal vez su expresión regular debe ser /\s* \s*/ig para reemplazar más de 1 instancia dentro de una cadena y también para dar cuenta de más escenarios de la mezcla de espacio(s) con  . Así, algo como watermelon  flavored  drink (lo que puede suceder a menudo) serían reemplazados, mientras que con su expresión regular no. También el * debe ser utilizado en frente de cada \s desde html sólo representa un espacio de todos modos.
    • para mi CKEditors, ‘config.fillEmptyBlocks = false;’ no trabajo pero ‘config.basicEntities = false;’ ¿

  2. 9

    Hay otra manera de no romper carácter de espacio puede ocurrir. Por la simple introducción de un espacio al final de una frase.

    CKEditor escapa de HTML básico entidades, junto con el latín y el griego entidades.

    Agregar estas opciones de configuración para evitar que esto (también se puede añadir en el archivo de configuración):

    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 = '';
    
     });
    });

    Estas opciones prevenir CKEditor de escapar nbsp gt lt amp ' " otro latina y caracteres griegos.

    Fuentes:
    http://docs.ckeditor.com/#!/api/CKEDITOR.config
    http://docs.ckeditor.com/source/plugin48.html#CKEDITOR-config-cfg-basicEntities

    • config.basicEntities = false evitar que escribió el código HTML de ser escapado y así la gente simplemente va a ser capaz de escribir en HTML que de lo contrario sería filtrada / inocuas. (Que implícita de lo que usted dijo que se detiene gt lt y se escapó, y realmente usted no debe confiar en cualquier datos introducidos por el usuario, ni siquiera si llegó a través de ckEditor, pero pensó que no vale la pena mencionar.)
  3. 8

    Tratar:

    config.basicEntities = false;

    para mí se ha solucionado el problema.

    • ya está incluido en su respuesta 17 meses antes de que se agregó. Un comentario (y upvote) en su respuesta habría sido mejor, porque la repetición es redundante y desechos de tiempo a los lectores, por no mencionar que hace que parezca que no ver otras respuestas.
    • Véase también mi comentario sobre basicEntities=false dejar que a través de HTML arbitrario en @gabriel respuesta.
    • creo que su respuesta fue directo al punto, y esta línea solo resuelto el problema sin distracciones innecesarias
  4. 4

    en config.js:

    CKEDITOR.editorConfig = function( config ) {
      config.enterMode = CKEDITOR.ENTER_BR; //<p></p> to <br />
      config.entities = false;
      config.basicEntities = false;
    };

    Es el trabajo para mí, después de que usted puede imprimir texto con php: html_entity_decode( $someText );

  5. 2

    Me di cuenta de algunas de las operaciones de edición de texto, como borrar un carácter (por golpear el botón de Retroceso) son desdoblamiento editado nodo de texto en dos. Golpear la Barra espaciadora en el final de este recién creado nodo de texto es lo que se traduce siempre en &nbsp; en lugar de en el espacio normal. Estoy llamando normalize() http://www.w3schools.com/jsref/met_node_normalize.asp a cambiado elemento después del cambio:

    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();
            }
        });
     });
  6. 0

    Yo tenía los mismos problemas de la creación de algunas tablas. Lo que yo vi fue que si me crea las tablas con la regla css align="left" la <p>&nbsp;</p> se agregan, pero si he cambiado la regla css para align="center" podía editar los párrafos y no se agrega de nuevo.

  7. 0

    Yo ya había tenido que jugar con config.js, por lo que en el fin de corregir ‘?’, demostrando en safari me terminó con 3 líneas en config.js

    config.fillEmptyBlocks = function (element) {
    return true; //DON'T DO ANYTHING!!!!!};
    config.entities = false;
    config.basicEntities = false;
  8. 0

    Esta es una mala solución

    config.basicEntities = false;
    • Porque no permite que se inserte el código JS en el formulario como texto. Como que <script type="text/javascript" src="/scripts/redactor/ckeditor/ckeditor.js"></script>
    • Además, los bloques vacíos como <p>&nbsp;</p> no se puede especificar una sangría en el texto puesto que el carácter &nbsp; será eliminado (config.fillEmptyBlocks = true;)

    Esta es la solución correcta

    $text = preg_replace("#([^>])&nbsp;#ui", "$1 ", $text);
    • Esta es una función de PHP que reemplaza todos los caracteres &nbsp; en un espacio, a excepción de aquellos que están dentro de la etiqueta como <p>&nbsp;</p>
    • El código de la función no es el más elegante, puede sugerir su propia versión.
  9. -3

    Si estás usando PHP puede utilizar el siguiente :

    preg_replace("/[\<]p[\>][\s]+&nbsp;[\<][\/]p[\>]/" , " " , $pre_comment);

    Esto eliminará : "<p> &nbsp;</p>"

    Disfrutar 🙂

    Maxwell

    • No quiero downvote esta respuesta porque eres nuevo aquí, pero por favor tenga en mente… 1. pregunta ya está contestada correctamente! (cuando no se mantenga la mejor respuesta no respuesta en todo, especialmente en la edad de las preguntas) 2. este patrón contiene innecesarios [] soportes (todos ellos), innecesarios secuencias de escape \>, y es más que probable \< e innecesario + después de \s (patrón ~<p>\s&nbsp;</p>~ se ve más corto a la derecha?). 3. si usted quiere estar seguro de que hay un espacio normal dentro de P etiquetas, en sustitución de ~<p>\s*&nbsp;\s*</p>~i a mayúsculas-minúsculas con el ESPACIO es la mejor sugerencia (y más corto).

Dejar respuesta

Please enter your comment!
Please enter your name here