2015-10-16 23 views
10

Ho installato Visual Studio 2012 Express nel sistema operativo Windows 8.1 e utilizzo CKEditor nel mio progetto come da requisiti.Come evitare che ckeditor non aggiunga   nel tag html vuoto

Sono di nuovo per CKEditor e di utilizzarlo in modo corretto come bene, ma il problema è definendo l'html in origine nel CKEditor si sostituisce automaticamente

<div><i class="classname"></i></div> 

con

<div>&nbsp;</div> or <div></div> 

Così come impedire a CKEditor di non sostituirlo e salvare così com'è? Ho avuto qualche soluzione, ma l'errore ancora po 'che sto sostituendo

<i class="classname"></i> 

con

<div class="classname"></div> 

ma tra il tag si aggiunge automaticamente & nbsp.

Come evitare di non aggiungere & nbsp?

Qui sotto l'immagine è CKEditor è aperto e si può vedere in un'area arrotondata aggiunge automaticamente un po 'di spazio o scheda nel mio codice.

Come fermarlo?

enter image description here

risposta

4

Date un'occhiata a questo post: CKEditor unwanted &nbsp; characters

Dopo alcune ricerche ho potuto fare luce su questo tema - purtroppo non esiste una soluzione out-of-the-box.

Nel CKEditor ci sono quattro modi uno spazio no-break può verificarsi (qualcuno sa di più?):

  1. Automatic filling of empty blocks. Questo può essere disattivata nel config:

    config.fillEmptyBlocks = false; 
    
  2. Automatic insertion when pressing TAB-key. Questo può essere diabled nella configurazione:

    config.tabSpaces = 0; 
    
  3. Conversione doppi spazi per SPACE + NBSP. This is a browser behavior and will thus not be fixed by the CKEditor team. Potrebbe essere risolto su server o su un javascript onunload clientide. Forse questo è un inizio php :

    preg_replace('/\s&nbsp;\s/i', ' ', $text); 
    
  4. Con copia & incolla. Se si incolla uno UTF-8 no-break space o due spazi, CKEditor lo convertirà automaticamente. L'unica soluzione che vedo qui sta eseguendo un'espressione regolare come sopra. config.forcePasteAsPlainText = true; non aiuta.

Sommario: Per sbarazzarsi di tutti gli spazi no-break necessari per scrivere un ulteriore funzione che pulisce l'input dell'utente.

Commenti e ulteriori suggerimenti sono molto apprezzati! (Sto usando ckeditor 3.6.4)

EDIT # 1

Date un'occhiata a questo.

CKEDITOR.dtd.$removeEmpty.i= 0; 

È inoltre possibile utilizzare questo con span e altri tag.

The documentation to this.

arresto rimuovere qualsiasi tag vuoto in CKEditor

C'è una lista definita di tag che sta per essere rimosso se vuota (vedi dtd.js e $ removeEmpty o Run CKEDITOR.dtd. $ RemoveEmpty dalla console).

  • da HTML

Per garantire la determinato tag vuoto non vengono rimossi, aggiungere l'attributo 'data-CKE-sopravvivere':

<span data-cke-survive="true" ></span> 
  • Da Configurazioni

Oppure è possibile configurare il particolare ta g da non essere rimosso.

if(window.CKEDITOR){ 
      CKEDITOR.on('instanceCreated', function (ev) { 
       CKEDITOR.dtd.$removeEmpty['span'] = 0; 
       CKEDITOR.dtd.$removeEmpty['TAG-NAME'] = 0; 
      } 
} 

Impostando un elemento a 0 nella CKEDITOR.dtd $ removeEmpty, esso impedisce i tag vuoti venga rimosso da CKEditor.

http://margotskapacs.com/

+0

ho cercato la soluzione, ma non ottenere il risultato ancora sostituire con il vuoto. Ho aggiornato la domanda per favore attraversarla. –

+0

Ho aggiornato la mia risposta. – KMathmann

+0

Sì, sta funzionando da ora ma per ogni tag html come devo mettere questa linea! –

1

Questo argomento può essere utile https://stackoverflow.com/

In breve È possibile disattivare il riempimento automatico dei blocchi vuoti nella config:

config.fillEmptyBlocks = false; 

Ulteriori informazioni here

UPD.

si può provare questo config.protectedSource.push(/<i[^>]*><\/i>/g);

Da official documentation

{} Array CKEDITOR.config.protectedSource Dal: 3.0

Elenco di espressioni regolari da eseguire su HTML di input, che indica il codice sorgente HTML che, se abbinato, non deve essere disponibile in modalità WYSIWYG per la modifica.

config.protectedSource.push (/ < \? [\ S \ S] *? \?>/G); // codice PHP

config.protectedSource.push (/ <% [\ s \ S] *?%>/G); // codice ASP

config.protectedSource.push (/ (] +> [\ s | \ S] *? </asp: [^>] +>) | (] + />)/gi); // ASP.Net codice

UPD 2

Spero che questo vi aiuterà.

CKEDITOR.on('instanceReady', function(ev) 
 
{ 
 
// turn off excess line breaks in html output formatting for blockquote tag. 
 
// In same way you can correct any tag output formating 
 

 
ev.editor.dataProcessor.writer.setRules('blockquote', 
 
{ 
 
    indent : false, 
 
    breakBeforeOpen : false, 
 
    breakAfterOpen : false, 
 
    breakBeforeClose : false, 
 
    breakAfterClose : true 
 
}); 
 
});

+1

Wow! Hai appena copiato la risposta dall'altra pubblicazione ... – Patrick

+1

No, quando ho iniziato a scrivere, la risposta in alto non esiste. Scusa se questo sembra come una rapina –

+0

@MamikonArakelyan Lo provo ma nessun effetto nel mio codice. Lo sovrascrive con lo spazio vuoto. –