Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    5

    TinyMCE e blocchi di codice (<pre> e <textarea>)

    Ciao a tutti,
    sto cercando di utilizzare TinyMCE per inserire in un testo (un articolo sulla programmazione) dei blocchi di codice C di esempio. La mia idea era di evidenziarne la sintassi con lo script SyntaxHighlighter.

    Per fare questo ho bisogno che il codice inserito in TinyMCE sia contenuto nei tags pre o textarea. Con qualche accortezza questi elementi sono facilmente utilizzabili con l'editor.

    PROBLEMA: non riesco ad impedire che TinyMCE modifichi la formattazione all'interno dei suddetti tag (il che è fondamentele per una corretta visualizzazione del codice...). In particolare:
    • <pre>: il testo perde la formattazione (tutti i ritorni a capo sono sostituiti con il tag
      ).
      ad esempio
      codice:
        <pre>uno
        due
        tre</pre>
      
      diventa
      
        <pre>uno
      due
      tre</pre>
    • <textarea>: non si riesce a modificare dall'editor (non è possibile posizionare il cursore all'interno dell'area). Modificando il contenuto dalla "source view" tutti i ritorni a capo vengono eliminati.
      ad esempio:
      codice:
        <textarea>uno
        due
        tre</textarea>
      
      diventa
      
        <textarea>uno due tre</textarea>


    Qualche consiglio per fare in modo che TinyMCE non tocchi il codice all'interno dei tag pre e textarea??

    Grazie
    Dario

  2. #2
    primo problema ....
    codice:
    testo = testo.replace(/<pre>([^\2]+)(<\/pre>)/, function(pre, contenuto){
        return "<pre>" + contenuto.replace(/<br\s*\/>/g, "\n") + "</pre>";
    });
    secondo problema ... più complicato.
    Innanzitutto non è vero che non puoi posizionare il cursore, ma devi prevenire eventi dell'editor ed implementarne di tuoi, non così semplice a livello medio/base di JS, però va capito se gli "a capo" sono ancora nell'area oppure no (quello che vedi non è detto sia quello che c'è)

    per capire questo punto ...
    codice:
    testo.replace(/<textarea>([^\2]+)(<\/textarea>)/, function(textarea, contenuto){
        alert(contenuto.replace(/\r\n|\n|\r/g, "\n"));
    });
    se contenuto mostra "a capo" nell'alert significa che sono ancora li e si può procedere come nel primo caso, altrimenti devi modificare il parser di TinyMCE


    P.S. la variabile testo è il contenuto dell'area
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    P.S. ho dimenticato le g in tutti e due gli esempi ... da mettere allla fine
    ...(<\/pre>)/g

    ...(<\/textarea>)/g
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    5
    Grazie!

    Quindi l'unico modo per impedire che TinyMCE modifichi il contenuto dei miei tag <pre> è "correggere" le sue modifiche con un'espressione regolare?

    Non vorrei farti cadere le braccia (non mi intendo molto di javascript, DOM e varie...) ma... dove devo inserirlo il codice che hai postato? In coda alla pagina, in modo che modifichi la textarea indipendentemente da TinyMCE, oppure da qualche parte all'interno degli script dell'editor?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.