2013-03-18 17 views
9
#something { 
    background: url(data:image/png;base64,ABCDEF); 
} 

Questo frammento funziona in tutti i browser che supportano l'URI dei dati (ovviamente con qualcos'altro che ABCDEF).Gli URI di dati non quotati sono validi nei CSS?

Inoltre, è valida secondo the CSS 2.1 spec:

... opzionale apostrofo (') o doppie virgolette (") seguito dalla URI sé ...

Ma lo validator non lo accetta senza virgolette:

Errore di valore: background url (dati: image/png; base64, ABCDEF) è un URL errato

Se si circonda l'URI con virgolette singole o doppie, viene convalidato.

Mi manca qualcosa? È un bug nel validatore? EDIT: it was!

+1

È necessario aggiornare la domanda: si trattava di un bug nel programma di convalida, che ora è stato corretto. Cf. la discussione su https://github.com/w3c/css-validator/issues/42 –

risposta

11

Finché l'URI stesso non si rompe la sintassi url() in qualsiasi modo (ad esempio ( e ) deve o essere sfuggito o URI codificato in modo che non terminano prematuramente il token funzione, indicato anche nelle specifiche), dovrebbe essere valido anche se non quotato.

È probabilmente un bug di convalida. Specificamente, essa non sembra gestire URI dati quotati in qualsiasi forma, perché quando semplicemente cambio data a http (anche se ovviamente non assomiglia un indirizzo HTTP tipico):

#something { 
    background: url(http:image/png;base64,ABCDEF); 
} 

... it quindi passa magicamente la validazione.

+2

concordata. Se la specifica lo definisce come facoltativo, a meno che non ci sia qualcos'altro che dice che deve essere diverso per lo schema di dati, allora il problema è con il validatore se fallisce il tuo markup per mancarli. – PhonicUK

+1

Ho aperto un problema su [github] (https://github.com/w3c/css-validator/issues/42#issuecomment-155572400). –

Problemi correlati