URI ของข้อมูลที่ไม่มีเครื่องหมายคำพูดนั้นถูกต้องใน CSS หรือไม่

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

ตัวอย่างนี้ ใช้งานได้ ในทุกเบราว์เซอร์ที่รองรับ URI ข้อมูล (เห็นได้ชัดว่าเป็นอย่างอื่นที่ไม่ใช่ ABCDEF)

นอกจากนี้ ยังใช้งานได้ตามข้อกำหนด CSS 2.1:

...เป็นทางเลือก เครื่องหมายคำพูดเดี่ยว (') หรือเครื่องหมายคำพูดคู่ (") ตามด้วย URI เอง...

แต่ เครื่องมือตรวจสอบ จะไม่ยอมรับหากไม่มีเครื่องหมายคำพูด:

ข้อผิดพลาดของค่า: URL พื้นหลัง (data:image/png;base64,ABCDEF) เป็น URL ที่ไม่ถูกต้อง

หากคุณล้อมรอบ URI ด้วยเครื่องหมายคำพูดเดี่ยวหรือคู่ ระบบจะตรวจสอบความถูกต้อง

ฉันพลาดอะไรไปรึเปล่า? มันเป็นจุดบกพร่องในตัวตรวจสอบความถูกต้องหรือไม่? แก้ไข: เป็นเช่นนั้น!


person MM.    schedule 18.03.2013    source แหล่งที่มา
comment
คุณควรอัปเดตคำถามของคุณ: มันเป็นข้อบกพร่องในตัวตรวจสอบซึ่งขณะนี้ได้รับการแก้ไขแล้ว อ้างอิง การสนทนาที่ github.com/w3c/css-validator/issues/42   -  person Clément    schedule 17.03.2017


คำตอบ (1)


ตราบใดที่ URI เองไม่ทำลายไวยากรณ์ url() แต่อย่างใด (เช่น ( และ ) จะต้องหลบหนีหรือเข้ารหัส URI เพื่อไม่ให้สิ้นสุดโทเค็นฟังก์ชันก่อนเวลาอันควรตามที่กล่าวถึงในข้อมูลจำเพาะด้วย) ก็ควรจะถูกต้อง แม้ว่าจะไม่มีการอ้างอิงก็ตาม

อาจเป็นข้อผิดพลาดของเครื่องมือตรวจสอบความถูกต้อง โดยเฉพาะอย่างยิ่ง ดูเหมือนจะไม่จัดการ URI ของข้อมูลที่ไม่มีเครื่องหมายคำพูดในรูปแบบใด ๆ เพราะเมื่อฉันเปลี่ยน data เป็น http (แม้ว่าจะเห็นได้ชัดว่าไม่คล้ายกับที่อยู่ HTTP ทั่วไปก็ตาม):

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

... จากนั้นมันก็ผ่านการตรวจสอบอย่างน่าอัศจรรย์

person BoltClock    schedule 18.03.2013
comment
ตกลง หากข้อมูลจำเพาะกำหนดว่าเป็นทางเลือก เว้นแต่จะมีอย่างอื่นที่บอกว่าจำเป็นต้องแตกต่างออกไปสำหรับแผนข้อมูล แสดงว่าปัญหาเกิดขึ้นกับเครื่องมือตรวจสอบความถูกต้องหากมาร์กอัปของคุณล้มเหลวเนื่องจากขาดหายไป - person PhonicUK; 18.03.2013
comment
ฉันเปิดปัญหาบน github - person Clément; 11.11.2015