2013-02-18 12 views
13

L'attributo 'class' di elementi HTML5 può contenere interruzioni di riga? È consentito nelle specifiche e i browser lo supportano?L'attributo dell'elemento 'classe' HTML può contenere interruzioni di riga?

Chiedo perché ho un codice che inserisce dinamicamente varie classi nell'elemento e questo ha creato una riga molto lunga che è difficile da gestire. Normalmente vorrei costruire il valore della classe usando una variabile, ma il CMS che sto usando richiede che i tag condizionali dei template siano posizionati in linea con l'HTML. Non posso usare variabili o PHP.

Quello che ho trovato nella mia ricerca è che alcuni attributi di tag HTML devono essere una riga singola, ma non sono stato in grado di scoprire se l'attributo class è uno di quelli.

Qualcuno sa qualcosa su questo?

+0

Si prega di inserire il codice, è sempre meglio mostrare wat su cui si sta lavorando con snipp ets e pagine di prova – Shail

+1

Quali attributi "gli attributi devono essere una singola riga"? – unor

risposta

18

Per il HTML 4 spec, l'attributo class è CDATA:

utente dovrebbero interpretare i valori degli attributi come segue:

o Sostituire le entità carattere con i caratteri

o Ignora linea alimenta

o Sostituire ogni ritorno a capo o scheda con un singolo spazio.

quindi sei in buona forma lì.

Il HTML5 spec descrive una classe come set of space separated tokens, dove uno 'spazio' include una nuova riga.

Quindi dovresti essere bravo anche lì.

+0

Grazie Dancrumb. Quindi, pensi che la maggior parte dei browser supporterà questa multa? –

+2

dovrebbero ... la specifica HTML4 è del 1999 – Dancrumb

+2

Re: compatibilità con il browser - come accade, di recente mi sono imbattuto in un caso sul lavoro in cui l'utilizzo di newline negli attributi di classe impediva a jQuery di selezionare correttamente utilizzando selettori CSS basati su classi in IE 8 - come se IE 8 o jQuery-in-IE-8 non vedessero la nuova riga come spazio bianco, ma come parte di un nome di classe. La sostituzione di newline con spazi ha risolto il problema. Purtroppo, mentre riesco a riprodurlo con il mio particolare codice dal lavoro (verificando prima e dopo la sostituzione di newline), in casi di test più semplici sembra che IE 8 gestisca questa multa, e non riesco a condividere il mio codice dal lavoro . –

4

L'attributo [class] può contenere interruzioni di riga?

Sì. The HTML5 spec says:

L'attributo, se specificato, deve avere un valore che è un set of space-separated tokens rappresenta le varie classi che l'elemento appartiene.

Il link procede a dire:

Un serie di token separati da spazi è una stringa contenente zero o più parole (noto come token) separate da uno o più space characters, dove le parole consistono di qualsiasi stringa di uno o più caratteri, nessuno dei quali è space characters.

E caratteri spazio includono:

  • spazio (' ')
  • scheda (\t)
  • avanzamento riga (\n)
  • forma avanzamento (\f)
  • ritorno (\r)

I caratteri spazio, ai fini della presente descrizione, sono U + 0020 SPACE, "tab" (U + 0009), "LF" (U + 000A), "FF" (U + 000C) e "CR" (U + 000D).

Newlines come si dovrebbe aggiungere ai documenti UTF-8 sono:

  • avanzamenti di riga (\n)
  • ritorni a capo (\r)
  • un ritorno a capo immediatamente seguita da un avanzamento riga (\r\n)
Problemi correlati