Saltar al contenido

¿Cómo evitar que CKEditor reemplace espacios con?

Solución:

Basado en la respuesta aceptada por Reinmars y el complemento de Entidades, creé un pequeño complemento con un filtro HTML que elimina los elementos redundantes   entidades. La expresión regular podría mejorarse para adaptarse a otras situaciones, así que edite esta respuesta.

/*
 * Remove   entities which were inserted ie. when removing a space and
 * immediately inputting a space.
 *
 * NB: We could also set config.basicEntities to false, but this is stongly
 * adviced against since this also does not turn ie. < into &lt;.
 * @link http://stackoverflow.com/a/16468264/328272
 *
 * Based on StackOverflow answer.
 * @link http://stackoverflow.com/a/14549010/328272
 */
CKEDITOR.plugins.add('removeRedundantNBSP', {
  afterInit: function(editor) {
    var config = editor.config,
      dataProcessor = editor.dataProcessor,
      htmlFilter = dataProcessor && dataProcessor.htmlFilter;

    if (htmlFilter) {
      htmlFilter.addRules({
        text: function(text) {
          return text.replace(/(w)&nbsp;/g, '$1 ');
        }
      }, {
        applyToAll: true,
        excludeNestedEditable: true
      });
    }
  }
});

Estas entidades:

// Base HTML entities.
var htmlbase="nbsp,gt,lt,amp";

Son una excepción. Para deshacerse de ellos, puede configurar basicEntities: false. Pero como mencionan los documentos, este es un entorno inseguro. Entonces, si solo quieres eliminar &nbsp;, entonces debería usar expresiones regulares en los datos de salida (por ejemplo, agregando un oyente para #getData) o, si desea ser más preciso, agregue su propia regla a htmlFilter al igual que entities plugin hace aquí.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *