Apakah URI data yang tidak diberi tanda kutip valid di CSS?

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

Cuplikan ini berfungsi di semua browser yang mendukung URI data (tentunya dengan URI selain ABCDEF).

Selain itu, ini valid menurut spesifikasi CSS 2.1:

...opsional karakter kutip tunggal (') atau kutip ganda (") diikuti dengan URI itu sendiri...

Namun validator tidak akan menerimanya tanpa tanda kutip:

Kesalahan Nilai : url latar belakang (data:image/png;base64,ABCDEF) adalah URL yang salah

Jika Anda mengapit URI dengan tanda kutip tunggal atau ganda, itu akan divalidasi.

Apakah saya melewatkan sesuatu? Apakah ini bug di validatornya? EDIT: itu!


person MM.    schedule 18.03.2013    source sumber
comment
Anda harus memperbarui pertanyaan Anda: itu adalah bug di validator, yang sekarang telah ditambal. Lih. diskusi di github.com/w3c/css-validator/issues/42   -  person Clément    schedule 17.03.2017


Jawaban (1)


Selama URI itu sendiri tidak merusak sintaks url() dengan cara apa pun (misalnya ( dan ) harus di-escape atau dikodekan URI agar tidak mengakhiri token fungsi sebelum waktunya, yang juga disebutkan dalam spesifikasi), URI tersebut harus valid meskipun tanpa tanda kutip.

Ini mungkin bug validator. Secara khusus, tampaknya ini tidak menangani URI data yang tidak diberi tanda kutip dalam bentuk apa pun, karena ketika saya mengubah data menjadi http (walaupun jelas tidak menyerupai alamat HTTP pada umumnya):

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

... kemudian secara ajaib melewati validasi.

person BoltClock    schedule 18.03.2013
comment
Sepakat. Jika spesifikasi mendefinisikannya sebagai opsional, kecuali ada hal lain yang mengatakan itu harus berbeda untuk skema data, maka masalahnya ada pada validator jika markup Anda gagal karena kehilangannya. - person PhonicUK; 18.03.2013
comment
Saya membuka masalah di github. - person Clément; 11.11.2015