Pregunta

¿Es posible crear un bloque de código dentro de la CKEditor que no va a ser tocado por el propio editor, y se mantendrá en su estado destinado hasta que se cambie explícitamente por el usuario? He estado tratando de entrada de variables de JavaScript (atado en etiquetas de script) y una película flash siguiente, pero CKEditor sigue reescribir mi código / marcado pegado, y al hacerlo, rompiendo mi código.

Estoy trabajando con la siguiente configuración:

<script type="text/javascript">
  var editor = CKEDITOR.replace("content", {
    height : "500px",
    width : "680px",
    resize_maxWidth : "680px",
    resize_minWidth : "680px",
    toolbar :
    [
      ['Source','-','Save','Preview'],
      ['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'],
      ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
      ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
      ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
      ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
      ['Link','Unlink','Anchor'],
      ['Image','Table','HorizontalRule','SpecialChar']
    ]
  });
  CKFinder.SetupCKEditor( editor, "<?php print url::base(); ?>assets/ckfinder" );
</script>

supongo que la solución más ideal sería conservar el contenido de cualquier etiqueta que contiene class="preserve" permite mucho más que las exclusivas limitadas.

Actualizar : Estoy pensando en la solución a este problema se encuentra en CKEDITOR.config.protectedSource() , pero mi experiencia de expresiones regulares está demostrando ser demasiado juvenil para manejar este problema. ¿Cómo hago para eximir a todas las etiquetas que contienen la clase 'conservado' de haber sido afectado por CKEditor?

¿Fue útil?

Solución 3

El problema no es con el CKEditor. En cambio, el problema fue con la MVC-motor que ejecuta el sitio en sí. Kohana tiene una global_xss_filtering dentro de su configuración que está habilitado de forma predeterminada. Esto evita la presentación de etiquetas de script, para evitar ataques de secuencias de comandos en su sitio. El cambio de este valor a false permitirá la presentación de las etiquetas <script> en las formas, pero también abre el sitio a posibles problemas de seguridad que pueden ser muy graves. Es recomendable que no desactivar global_xss_filtering.

/* /(system|application)/config/config.php - line 66 */
/**
 * Enable or disable global XSS filtering of GET, POST, and SERVER data. This
 * option also accepts a string to specify a specific XSS filtering tool.
 */
$config['global_xss_filtering'] = FALSE;

Otros consejos

En la carpeta CKeditor tiene un archivo config.js . Abrirlo y pegar el código:

CKEDITOR.editorConfig = function( config ) {
    config.allowedContent = {
        script: true,
        $1: {
            // This will set the default set of elements
            elements: CKEDITOR.dtd,
            attributes: true,
            styles: true,
            classes: true
        }
    };
};

Esto permitirá etiquetas <script>...</script> en el modo de Fuente.

Sugerencia 1:. Crear área de texto sin formato diferente para el administrador para entrar en el / código de secuencias de comandos HTML

Sugerencia 2: Introducir una BBCode, como [script][/script] o [html][/html] que los administradores pueden utilizar para poner el / código HTML guiones y tener su lado del servidor que se traducen en <script></script> y el código HTML. Asegúrese de que la hora de mostrar un contenido guardado en el CKEditor, es necesario tener el lado del servidor que se traducen en la primera BBCode (o CKEditor se tira de ellos hacia fuera). O la forma menos problemas es almacenar el contenido presentado en la base de datos como se incorpora y sólo hacer la traducción al visualizar la página.

Sugerencia 3 : Desde que desea utilizar class="preserve" para marcar las etiquetas que no desea CKEditor retirar de él, a continuación, añadir las siguientes líneas de JavaScript al inicializar el editor:

// protect <anytag class="preserve"></anytag>
CKEDITOR.config.protectedSource.push( /<([\S]+)[^>]*class="preserve"[^>]*>.*<\/\1>/g );
// protect <anytag class="preserve" /><
CKEDITOR.config.protectedSource.push( /<[^>]+class="preserve"[^>\/]*\/>/g );
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top