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

Ten fragment kodu działa we wszystkich przeglądarkach obsługujących identyfikatory URI danych (oczywiście z czymś innym niż ABCDEF).Czy nieuaktualnione dane URI są prawidłowe w CSS?

Ponadto jest ważne zgodnie the CSS 2.1 spec:

... opcjonalnie apostrof (') lub podwójny cudzysłów (") postać a następnie samego URI ...

Ale validator nie zaakceptuje go bez cytowań:

Błąd wartości: adres URL tła (dane: image/png; base64, ABCDEF) jest nieprawidłowym adresem URL:

Jeśli otaczasz URI pojedynczymi lub podwójnymi cudzysłowami, to sprawdza poprawność.

Czy brakuje mi czegoś? Czy jest to błąd w walidatorze? EDYCJA: it was!

+1

Powinieneś zaktualizować swoje pytanie: to błąd w walidatorze, który został już załatany. Cf. dyskusja na https://github.com/w3c/css-validator/issues/42 –

Odpowiedz

11

Dopóki sam URI nie przerwać składni url() w dowolny sposób (na przykład ( i ) muszą być albo ucieczki lub URI kodowane tak, aby nie przedwczesne zakończenie znak funkcji, a także wymienione w specyfikacji), powinna być ważna, nawet jeśli nie jest cytowana.

To prawdopodobnie błąd sprawdzania poprawności. W szczególności, nie wydaje się, aby obsłużyć nienotowanych URI danych w dowolnej formie, bo kiedy po prostu zmienić data do http (choć oczywiście nie przypominają typowego adres http):

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

... go następnie magicznie przechodzi walidację.

+2

Uzgodniona. Jeśli specyfikacja definiuje je jako opcjonalne, to chyba że jest coś innego, co musi być inne dla schematu danych, problem dotyczy walidatora, jeśli nie powiedzie się on za ich brak. – PhonicUK

+1

Otworzyłem błąd na [github] (https://github.com/w3c/css-validator/issues/42#issuecomment-155572400). –

Powiązane problemy