- UI การแจ้งเตือนแบบ Toast ไม่ได้รับการแนะนำจาก GitHub อีกต่อไปเนื่องจากปัญหาด้านการเข้าถึง
- โครงสร้างการแจ้งเตือนชั่วคราว ที่หายไปเองอัตโนมัติมีความเสี่ยงที่จะละเมิดเกณฑ์การเข้าถึงทั้งด้านการมองเห็นและการใช้งาน (WCAG)
- GitHub เสนอ banner และ dialog ซึ่งเป็น วิธีให้ฟีดแบ็กที่คงอยู่และเข้าถึงได้ เป็นทางเลือก
- Toast ยังมีปัญหาด้านการใช้งานอีกหลายอย่าง เช่น หน้าจอขนาดใหญ่ การทำหลายอย่างพร้อมกัน และภาวะเพิกเฉยต่อแบนเนอร์
- เพื่อการเข้าถึงและประสบการณ์ผู้ใช้ที่สม่ำเสมอ จึง ยุติการใช้ Toast ทั่วทั้งระบบออกแบบ Primer
ภาพรวมของ Toasts
- Toast คือ หน้าต่างแจ้งเตือนทรงสี่เหลี่ยมขนาดเล็ก ที่ปรากฏชั่วคราวบริเวณมุมล่างของหน้าจอ โดยถูกทริกเกอร์จากการกระทำของผู้ใช้หรือระบบ
- มีโครงสร้างที่หายไปเองโดยอัตโนมัติหลังผ่านไประยะเวลาหนึ่ง จึงมี ปัญหาด้านการเข้าถึงและการใช้งาน อยู่ในตัว
- ด้วยเหตุนี้ GitHub จึงแนะนำให้ใช้ วิธีการสื่อสารที่เสถียรและเข้าถึงได้มากกว่า
ทางเลือกแทน Toast
- ควรเลือก UI ที่เหมาะสมตามวัตถุประสงค์การใช้งาน
- การแจ้งความสำเร็จแบบง่ายสามารถ ยืนยันได้จากหน้าผลลัพธ์โดยตรง โดยไม่ต้องมีฟีดแบ็กเพิ่มเติม
- งานที่ซับซ้อนสามารถสื่อสถานะสำเร็จผ่าน banner หรือ การแสดงเนื้อหาแบบค่อยเป็นค่อยไป
- งานที่ล้มเหลวควรให้ข้อมูลข้อผิดพลาดผ่าน banner หรือ dialog
- สำหรับ การส่งฟอร์ม หากเป็นฟอร์มง่ายไม่จำเป็นต้องมีการยืนยันเพิ่มเติม ส่วนฟอร์มซับซ้อนให้ใช้ หน้าตรวจสอบระหว่างทาง หรือ banner
- การตรวจสอบข้อมูลนำเข้า ให้ใช้ คอมโพเนนต์ตรวจสอบฟอร์ม ที่มีอยู่แล้วใน Primer
- งานที่ใช้เวลานาน ให้แจ้งสถานะเสร็จสิ้นผ่านแบนเนอร์หรือ ช่องทางอื่น เช่น อีเมลหรือการแจ้งเตือนแบบพุช
- เมื่อเกิด session ไม่ซิงก์กัน ให้ใช้ dialog หรือ banner เพื่อ แจ้งว่าจำเป็นต้องรีเฟรช
ข้อพิจารณาด้านการเข้าถึง (Accessibility Considerations)
- UI แบบ Toast อาจละเมิด เกณฑ์ความสำเร็จของ WCAG หลายข้อ
- 2.2.1 Timing Adjustable (A) : ควรคงอยู่จนกว่าผู้ใช้จะปิดเอง
- 1.3.2 Meaningful Sequence (A) : ความไม่สอดคล้องกันระหว่างลำดับ DOM และลำดับที่มองเห็นอาจทำให้ผู้ใช้เทคโนโลยีช่วยเหลือสับสน
- 2.1.1 Keyboard (A) : ต้องควบคุมการโต้ตอบภายใน toast ได้ด้วยคีย์บอร์ด
- 4.1.3 Status Messages (AA) : ต้องแจ้งการมีอยู่ของมันต่อเทคโนโลยีช่วยเหลือโดยไม่รบกวน
- นอกจากนี้ยังอาจละเมิดเกณฑ์ต่อไปนี้ได้
- 1.4.4 Resize text (AA) : เมื่อปรับขนาดข้อความอาจเกิดการบังหน้าจอหรือข้อความล้น
- 1.4.10 Reflow (AA) : ต้องคงการเข้าถึงด้วยคีย์บอร์ดไว้เมื่อมีการเลื่อนแนวนอน
- 2.4.3 Focus Order (A) : อาจทำให้ลำดับโฟกัสสับสน
- 3.2.4 Consistent Identification (AA) : ต้องรักษาความสม่ำเสมอของโค้ด
ข้อพิจารณาด้านการใช้งาน (Usability Considerations)
- บน หน้าจอขนาดใหญ่ toast อาจอยู่พ้นสายตาจนไม่ถูกสังเกต
- เมื่อ หายไปอัตโนมัติ หากผู้ใช้กำลังทำอย่างอื่นอยู่ ก็มีความเสี่ยงที่จะพลาดข้อความ
- การบัง UI: toast อาจทับองค์ประกอบสำคัญ เช่น ปุ่มด้านล่าง
- ผู้ใช้ที่ ขยายหน้าจอ อาจมองไม่เห็น toast ที่อยู่นอกบริเวณที่ขยาย
- ปัญหาความจำขณะทำงาน: เมื่อหายไปอัตโนมัติจะไม่สามารถกลับมาตรวจสอบข้อมูลได้อีก
- ภาวะเพิกเฉยต่อแบนเนอร์: การใช้มากเกินไปทำให้ผู้ใช้มีแนวโน้มจะมองข้าม
- ตำแหน่งไม่สอดคล้องกัน: ระยะห่างทางกายภาพระหว่าง UI ที่เป็นตัวทริกเกอร์กับ toast อาจทำให้สับสนว่าเกี่ยวข้องกันอย่างไร
- การปิดที่ผิดพลาด: อาจเกิดปัญหาที่การกดปุ่ม Esc ปิด UI อื่นไปพร้อมกันด้วย
แหล่งข้อมูลอ้างอิงเพิ่มเติม
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
toast()แบบ global ทำได้ง่ายจนมีแนวโน้มถูกใช้พร่ำเพรื่อ แต่มีคนเสนอว่าการเปลี่ยนไปใช้โครงสร้างอย่างuseAlerts()จะดีกว่ามาก