JCE / TinyMCE - Continua a tentare di correggere HTML valido e non valido


9

Di tutti gli editor di Joomla che abbiamo usato, JCE si è adattato meglio ai nostri scopi e clienti. Ma ci sono alcuni problemi con l'editor che possono causare problemi quando codifichiamo qualcosa, quindi viene attivato Wysiwyg e l'editor cerca di "riparare" il nostro HTML perfettamente valido.

Prima di fare domande, sì, l'abbiamo impostato per consentire a tutti quegli elementi che JCE preferisce limitare, e no, NON è impostato per convalidare / ripulire l'html. Le uniche restrizioni che abbiamo sono per incollare i contenuti nell'editor.

Allegato A:

<a href="#"></a>

Questo scomparirà con l'editor di commutazione e viceversa. Sostituito con:

<p>&nbsp;</p>

Allegato B:

<a id="#nameofanchor"></a>

Cambia in:

<p>&nbsp;</p>

Allegato C:

<div><a id="#nameofanchor"></a></div>

Cambia in:

<div>&nbsp;</div>

Allegato D:

<a id="hello" class="link">Hello</a>

Cambia in:

<p><a id="hello" class="link"></a>Hello</p>

Esibire:

<a href="#">
<div>
<h2>Our Work</h2>
</div>
</a>

Cambia in:

<p><a href="#"></a></p>
<div>
<h2><a href="#">Our Work</a></h2>
</div>
<p>&nbsp;</p>

Ora, vogliamo usare id invece di name per la nostra ancora, perché è valido in HTML5, mentre tecnicamente il nome non lo è. Inoltre, in quale universo ID è un'assegnazione non valida a un collegamento?

Inoltre, ora che è del tutto legittimo avvolgere un div con collegamenti, perché JCE dovrebbe eliminare anche quelli?

È solo un'impostazione che mi manca? Qualcuno ha qualche idea su come posso usare l'editor in modo che possiamo programmare come ci serve nell'editor, ma i nostri clienti non possono rovinarlo semplicemente salvando in wysiwyg?

Modifica: l'ho provato su Chrome, Firefox e Safari. Non pensare che abbia qualcosa a che fare con il browser.

Modifica: l'ho provato con le impostazioni del contenitore. Sia il contenitore paragrafo sia il paragrafo su Invio e Div contenitore e Div su invio causano questo. Gli altri due, Nessun contenitore e paragrafo su invio, Nessun contenitore e interruzione di riga su invio, non lo causano. Il problema è: ho bisogno della prima impostazione! Per quanto sarebbe bello offrire ai clienti il ​​vantaggio del dubbio, semplicemente non ci si può fidare di loro per seguire le istruzioni e aggiungere la formattazione dei paragrafi al loro testo.

Confermato: questo succede anche con TinyMCE.

Quindi - sappiamo cosa causa questa - l'impostazione del contenitore di paragrafi - ora come possiamo aggirarla mantenendo viva questa impostazione?


1
Sono contento non sono solo io.
Craig,

Dopo le nostre precedenti discussioni e la conclusione che questo proviene dalla funzione di avvolgimento degli elementi JCE, non sono sicuro di cosa si tratti effettivamente. Se ritieni che i tuoi clienti siano in grado di aggiungere frammenti html come sopra, commutando lo stato dell'editor, perché non ti fiderai loro che avvolgeranno il loro contenuto con i tag <p> appropriati?
FFrewin

I nostri clienti non aggiungono HTML. Scriviamo HTML, usano il lato dell'editor - non appena l'editor viene attivato, distrugge il nostro HTML perfettamente valido.
Faye,

In ogni caso, se dai al cliente l'accesso in modifica a una pagina piena di HTML, allora in un modo o nell'altro c'è una grande possibilità che il cliente possa distruggere il tuo HTML. Che dire dell'utilizzo del Template Manager di JCE, o di altri tag "macro", che farà il lavoro sporco di aggiungere il markup di cui hai bisogno?
FFrewin

Risposte:


7

Uso JCE Editor su tutti i nostri siti, ma abbiamo anche iniziato a installare Sourcerer di NoNumbers. Ciò fornisce un semplice pulsante INSERISCI CODICE all'editor JCE che lo protegge dalle modifiche.

http://www.nonumber.nl/extensions/sourcerer


GRAZIE. Questo è perfetto, abbiamo già installato un numero illimitato sulle nostre cose perché è fantastico, non sapevo che avesse questo. Questo è perfetto.
Faye,

1
Non dovrebbe essere necessario utilizzare Sourcerer per aggiungere HTML.
BodgeIT,

Eppure devo, o JCE elimina il codice HTML perfettamente valido.
Faye,

2

Ci sono alcune impostazioni segrete per JCE. So che la seguente impostazione non &nbsp;viene aggiunta ai div vuoti, forse usata per cancellare i float, il che provoca problemi di altezza della linea quando viene renderizzato:

In the Editor Global Configuration, add:
remove_div_padding:1 
to Custom Configuration Variables. 

Mi aspetto che ce ne siano altri in grado di controllare qualsiasi aspetto dell'editor.


1

Penso che debbano essere le impostazioni di tipografia in: Profilo -> Parametri dell'editor -> Tipografia . Prova a impostare l'elemento contenitore e il tasto Invio su NoContainer e LineBreak su Invio per vedere se applica ancora eventuali modifiche al tuo codice HTML.

Ricorda inoltre che l'impostazione di convalida HTML ha un'impostazione per ciascun profilo dell'editor e che Joomla fornisce anche un filtro globale nella pagina di configurazione globale impostata da usergroup. Assicurarsi che non vi siano impostazioni lì per ciascun gruppo utenti.


Sì, sono stato in tutti i profili dell'editor, ecc. Ho impostato tutto correttamente senza HTML. La modifica del contenitore potrebbe risolverlo, ma causerà un altro problema, altrettanto problematico. Se un client può aggiungere contenuto di testo che non è racchiuso nei tag di paragrafo, la formattazione del testo sarà diversa. Non lo vogliamo neanche noi. Lo proverò per vedere se questo causa lo stesso problema con l'ancoraggio, ma per quanto riguarda i tag di paragrafo che si aggiungono, è una specie di par per il corso.
Faye,

Sì, sono le impostazioni del contenitore che lo fanno - ma come ho detto, è un problema più grande per i nostri clienti non essere in grado di incollare e avere un tag di paragrafo automatico che avvolge il loro contenuto.
Faye,

Penso che ciò stia accadendo perché i tuoi esempi di codice contengono interruzioni di riga, che è una sorta di "regola" per la creazione di paragrafi da parte di JCE. Dovrebbe esserci un tale criterio per farlo. Il tuo cliente incollerà tali frammenti html nell'editor?
FFrewin

I nostri clienti non useranno HTML, ma continuiamo a scrivere codice HTML dietro ciò che fanno. Creiamo aree in cui incollare / digitare contenuti semplici. Inoltre, se intendi digitare html in una riga anziché organizzato come sopra, ho provato anche quello. Ottengo esattamente gli stessi risultati.
Faye,

0

Questo comportamento non è esclusivo di JCE. TinyMCE si comporta allo stesso modo. Questo comportamento potrebbe non essere limitato a TinyMCE, potrebbe essere un comportamento DOM del browser.

JCE effettivamente si prende la briga di provare a mantenere alcuni tag vuoti, il metodo impiegato è quello di riempire con uno spazio.

https://github.com/widgetfactory/jce-editor/blob/master/editor/tiny_mce/plugins/cleanup/editor_plugin.js


Non mentirò, non ho idea di cosa significhi. Riesci a scomporlo un po 'di più? Cosa sto guardando in quel link? Cosa intendi con pad con uno spazio? L'aggiunta di uno spazio non distruttivo agli esempi di codice sopra riportati non modifica i risultati finali, l'ho verificato a fondo.
Faye,

Ho passato il mio editor predefinito a TinMCE, quello preinstallato con Joomla, e ho testato l'Allegato A. Inoltre ha rimosso i tag quando si passa dall'editor WYSIWYG alle viste Source. cioè questo comportamento non sembra essere unico per JCE. Quindi, mi chiedo se questo non sia univoco per TinyMCE, e forse lo stesso potrebbe accadere quando si utilizza la capacità del browser per eseguire la modifica sul posto. Il riferimento al codice JCE era la riga 129 in cui viene utilizzato uno spazio non-break tra i tag di inizio e fine. Questo funziona per me sia in JCE che in TinyMCE. Strano.
Peter Wiseman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.