องค์ประกอบ HTML มาตรฐาน เช่น <button>
หรือ <input>
มีการช่วยเหลือพิเศษด้วยแป้นพิมพ์ในตัวฟรี อย่างไรก็ตาม หากคุณกำลังสร้างคอมโพเนนต์แบบอินเทอร์แอกทีฟที่กำหนดเอง ให้ใช้แอตทริบิวต์ tabindex
เพื่อให้แน่ใจว่าเข้าถึงด้วยแป้นพิมพ์ได้
ตรวจสอบว่าการควบคุมของคุณเข้าถึงได้ด้วยแป้นพิมพ์หรือไม่
เครื่องมืออย่าง Lighthouse เก่งมากในการตรวจจับปัญหาด้านการช่วยเหลือพิเศษบางอย่าง แต่บางอย่างก็ทดสอบได้ด้วยมนุษย์เท่านั้น
ลองกดปุ่ม Tab
เพื่อไปยังส่วนต่างๆ ของเว็บไซต์ คุณสามารถเข้าถึงส่วนควบคุม
แบบอินเทอร์แอกทีฟทั้งหมดในหน้าเว็บได้ไหม หากไม่มี คุณอาจต้องใช้ tabindex
เพื่อปรับปรุงความสามารถในการโฟกัสของการควบคุมเหล่านั้น
แทรกองค์ประกอบในลำดับแท็บ
แทรกองค์ประกอบในลำดับแท็บปกติโดยใช้ tabindex="0"
เช่น
<div tabindex="0">Focus me with the TAB key</div>
หากต้องการโฟกัสองค์ประกอบ ให้กดแป้น Tab
หรือเรียกใช้เมธอด focus()
ขององค์ประกอบ
นำองค์ประกอบออกจากลำดับแท็บ
นำองค์ประกอบออกโดยใช้ tabindex="-1"
เช่น
<button tabindex="-1">Can't reach me with the TAB key!</button>
ซึ่งจะนำองค์ประกอบออกจากลำดับแท็บตามปกติ แต่องค์ประกอบจะยังคงโฟกัสได้ด้วยการเรียกใช้เมธอด focus()
โปรดทราบว่าการใช้ tabindex="-1"
กับองค์ประกอบจะไม่ส่งผลต่อองค์ประกอบย่อย
หากองค์ประกอบอยู่ในลำดับแท็บตามปกติหรือเนื่องจากค่า tabindex
องค์ประกอบจะยังคงอยู่ในลำดับแท็บ
หากต้องการนำองค์ประกอบและองค์ประกอบย่อยทั้งหมดออกจากลำดับแท็บ ให้พิจารณาใช้ Polyfill inert
ของ WICG
Polyfill จะจำลองลักษณะการทำงานของแอตทริบิวต์ inert
ที่เสนอ ซึ่งทำให้เทคโนโลยีความช่วยเหลือพิเศษเลือกหรืออ่านองค์ประกอบไม่ได้
หลีกเลี่ยงtabindex > 0
tabindex
ที่มากกว่า 0 จะข้ามองค์ประกอบไปด้านหน้าของลำดับแท็บตามปกติ หากมีหลายองค์ประกอบที่มี tabindex
มากกว่า 0 ลำดับของแท็บจะเริ่มจากค่าต่ำสุดที่มากกว่า 0 และค่อยๆ เลื่อนขึ้น
การใช้ tabindex
ที่มากกว่า 0 ถือเป็นรูปแบบการป้องกันเนื่องจากโปรแกรมอ่านหน้าจอจะไปยังส่วนต่างๆ ของหน้าตามลำดับ DOM ไม่ใช่ลำดับแท็บ หากต้องการให้องค์ประกอบเร็วยิ่งขึ้นในลำดับแท็บ ควรย้ายองค์ประกอบไปยังตำแหน่งก่อนหน้าใน DOM
Lighthouse ช่วยให้ระบุองค์ประกอบได้อย่างง่ายดายด้วยค่า tabindex
> 0 เรียกใช้การตรวจสอบการเข้าถึง (Lighthouse > Options > Accessibility) และมองหาผลลัพธ์ของการตรวจสอบ "ไม่มีองค์ประกอบที่มีค่า [tabindex] มากกว่า 0"
สร้างคอมโพเนนต์การช่วยเหลือพิเศษด้วย "Roving tabindex
"
หากคุณกำลังสร้างคอมโพเนนต์ที่ซับซ้อน คุณอาจต้องเพิ่มการรองรับแป้นพิมพ์เพิ่มเติมนอกเหนือจากการโฟกัส พิจารณาองค์ประกอบ select
ในตัว โดยจะโฟกัสได้และใช้ปุ่มลูกศรเพื่อแสดงฟังก์ชันเพิ่มเติม (ตัวเลือกที่เลือกได้)
หากต้องการใช้ฟังก์ชันการทำงานที่คล้ายกันในคอมโพเนนต์ของคุณเอง ให้ใช้เทคนิคที่เรียกว่า "Roving tabindex
" โดยแท็บ Roving จะทํางานโดยตั้งค่า tabindex
เป็น -1 สําหรับรายการย่อยทั้งหมด ยกเว้นรายการที่ใช้งานอยู่ในปัจจุบัน จากนั้นคอมโพเนนต์จะใช้ Listener เหตุการณ์ของแป้นพิมพ์เพื่อระบุว่าผู้ใช้ได้กดแป้นใดไปแล้ว
เมื่อเกิดกรณีนี้ขึ้น คอมโพเนนต์จะตั้งค่า tabindex
ของบุตรหลานที่โฟกัสก่อนหน้าเป็น -1 ตั้งค่า tabindex
ของรายการย่อยที่ต้องโฟกัสเป็น 0 และเรียกใช้เมธอด focus()
ก่อน
<div role="toolbar">
<button tabindex="-1">Undo</button>
<button tabindex="0">Redo</button>
<button tabindex="-1">Cut</button>
</div>
หลัง
<div role="toolbar">
<button tabindex="-1">Undo</button>
<button tabindex="-1">Redo</button>
<button tabindex="0">Cut</button>
</div>
สูตรอาหารการเข้าถึงด้วยแป้นพิมพ์
หากไม่แน่ใจว่าต้องใช้แป้นพิมพ์ในระดับใดที่รองรับคอมโพเนนต์ที่กำหนดเอง คุณอาจดูแนวทางปฏิบัติในการเขียน ARIA 1.1 ได้ คู่มือที่มีประโยชน์นี้จะแสดงรูปแบบ UI ทั่วไปและระบุคีย์ที่คอมโพเนนต์ควรรองรับ