การช่วยเหลือพิเศษ (a11y)

ส่วนขยายช่วยให้ผู้ใช้สร้างประสบการณ์การท่องเว็บที่เหมาะกับตนเอง ซึ่งปรับให้เหมาะกับความสามารถและความชอบของแต่ละบุคคล ส่วนขยายควรมีคอมโพเนนต์การช่วยเหลือพิเศษที่ส่งเสริมฐานผู้ใช้ที่ครอบคลุมโดยการช่วยให้ผู้ที่มีความบกพร่องทางสายตา การสูญเสียการได้ยิน ความคล่องแคล่วที่จำกัด และความพิการอื่นๆ สามารถเข้าถึงส่วนขยายได้

ทุกคน ไม่ใช่แค่ผู้ใช้ที่มีความต้องการพิเศษเท่านั้นที่จะได้รับประโยชน์จากฟีเจอร์การช่วยเหลือพิเศษ ผู้ใช้ที่มีความบกพร่องทางการมองเห็น ผู้ที่มีความคล่องแคล่วต่ำ และผู้ใช้ขั้นสูงจะได้รับประโยชน์จากแป้นพิมพ์ลัด คำบรรยายแทนเสียงและ ข้อความถอดเสียงมีความสำคัญอย่างยิ่งต่อผู้ใช้ที่หูหนวก แต่ก็ช่วยผู้เรียนภาษาได้ด้วย

ผู้ใช้โต้ตอบกับส่วนขยายได้หลายวิธี ผู้ใช้บางรายมีจอภาพ แป้นพิมพ์ และเมาส์มาตรฐาน หรืออาจต้องพึ่งพาแว่นขยายหน้าจอและอาจใช้โปรแกรมอ่านหน้าจอด้วย แม้ว่าเราจะคาดเดาไม่ได้ว่าผู้ใช้จะใช้เครื่องมือใดในการเข้าถึงส่วนขยาย แต่ก็มีขั้นตอนที่นักพัฒนาซอฟต์แวร์ทุกคนสามารถทำได้เพื่อให้ส่วนขยายเข้าถึงได้มากที่สุด

ผสานรวมตัวควบคุม UI ที่เข้าถึงได้

หากผู้ใช้เข้าถึงตัวควบคุมอินเทอร์เฟซผู้ใช้ไม่ได้ ก็จะใช้ส่วนขยายไม่ได้ วิธีที่ง่ายที่สุด ในการสร้าง UI ที่เข้าถึงได้คือการใช้ตัวควบคุม HTML มาตรฐาน

การควบคุมมาตรฐาน

ใช้การควบคุม UI ของ HTML มาตรฐานทุกครั้งที่ทำได้ การควบคุม HTML มาตรฐานสามารถเข้าถึงได้ด้วยแป้นพิมพ์ ปรับขนาดได้ง่าย และโดยทั่วไปโปรแกรมอ่านหน้าจอจะเข้าใจ

ภาพหน้าจอและโค้ดสำหรับปุ่ม ช่องทำเครื่องหมาย ปุ่มตัวเลือก ข้อความ ตัวเลือก/ตัวเลือก และลิงก์

WAI-ARIA ในตัวควบคุมที่กำหนดเอง

Web Accessibility Initiative - Accessible Rich Internet Applications หรือ WAI-ARIA คือ ข้อกำหนดสำหรับการทำให้การควบคุม UI สามารถเข้าถึงได้สำหรับโปรแกรมอ่านหน้าจอผ่านชุดแอตทริบิวต์ DOM มาตรฐาน แอตทริบิวต์เหล่านี้ให้ข้อมูลแก่โปรแกรมอ่านหน้าจอเกี่ยวกับฟังก์ชันและสถานะปัจจุบันของตัวควบคุมในหน้าเว็บ

หากต้องการเพิ่มการรองรับ WAI-ARIA ในตัวควบคุมที่กำหนดเอง คุณจะต้องแก้ไของค์ประกอบ DOM ของส่วนขยายให้มีแอตทริบิวต์ที่ Chrome ใช้เพื่อสร้างเหตุการณ์ระหว่างการโต้ตอบของผู้ใช้ โปรแกรมอ่านหน้าจอ จะตอบสนองต่อเหตุการณ์เหล่านี้และอธิบายฟังก์ชันของตัวควบคุม แอตทริบิวต์ DOM ที่ระบุโดย WAI-ARIA จะจัดอยู่ในบทบาท สถานะ และพร็อพเพอร์ตี้

<div role="toolbar">

พร็อพเพอร์ตี้ aria-activedescendant จะระบุว่าแถบเครื่องมือย่อยใดจะได้รับโฟกัสเมื่อ แถบเครื่องมือได้รับโฟกัส โค้ด tabindex="0" ระบุว่าแถบเครื่องมือจะได้รับโฟกัสตามลำดับเอกสาร

พิจารณาสเปคทั้งหมดสำหรับแถบเครื่องมือตัวอย่างด้านล่าง

<div role="toolbar" tabindex="0" aria-activedescendant="button1">
  <img src="buttoncut.png" role="button" alt="cut" id="button1">
  <img src="buttoncopy.png" role="button" alt="copy" id="button2">
  <img src="buttonpaste.png" role="button" alt="paste" id="button3">
</div>

เมื่อเพิ่มบทบาท สถานะ และพร็อพเพอร์ตี้ของ WAI-ARIA ลงใน DOM ของตัวควบคุมแล้ว Google Chrome จะเรียกใช้ เหตุการณ์ที่เหมาะสมกับโปรแกรมอ่านหน้าจอ เนื่องจากเรายังคงพัฒนาการรองรับ WAI-ARIA อยู่ Google Chrome อาจไม่สร้างเหตุการณ์สำหรับพร็อพเพอร์ตี้ WAI-ARIA ทุกรายการ และโปรแกรมอ่านหน้าจออาจไม่ รู้จักเหตุการณ์ทั้งหมดที่สร้างขึ้น

ดูบทแนะนำแบบรวดเร็วเกี่ยวกับการเพิ่มการควบคุม WAI-ARIA ลงในการควบคุมที่กำหนดเองได้ที่งานนำเสนอของ Dave Raggett จาก WWW2010

โฟกัสในการควบคุมที่กำหนดเอง

โฟกัสแป้นพิมพ์มีความสําคัญอย่างยิ่งสําหรับผู้ใช้ที่ไปยังส่วนต่างๆ ของเว็บโดยไม่ใช้เมาส์ ตรวจสอบว่าการควบคุมการทำงานและการนำทาง เช่น ปุ่ม กล่องรายการ และแถบเมนู สามารถรับโฟกัสของแป้นพิมพ์ได้

โดยค่าเริ่มต้น องค์ประกอบเดียวใน HTML DOM ที่รับโฟกัสของแป้นพิมพ์ได้คือ Anchor, ปุ่ม และตัวควบคุมแบบฟอร์ม อย่างไรก็ตาม การตั้งค่าแอตทริบิวต์ HTML tabIndex เป็น 0 จะวางองค์ประกอบ DOM ใน ลำดับแท็บเริ่มต้น ซึ่งช่วยให้องค์ประกอบเหล่านั้นรับโฟกัสของแป้นพิมพ์ได้

element.tabIndex = 0
element.focus();

การตั้งค่า tabIndex = -1 จะนำองค์ประกอบออกจากลำดับแท็บ แต่ยังคงอนุญาตให้องค์ประกอบ รับโฟกัสของแป้นพิมพ์โดยโปรแกรม

รองรับการเข้าถึงด้วยแป้นพิมพ์

ส่วนขยายควรใช้ได้ด้วยแป้นพิมพ์เพียงอย่างเดียว เพื่อให้ผู้ใช้ที่ใช้เมาส์ไม่ได้และผู้ใช้ขั้นสูงที่ไม่ได้ใช้เมาส์สามารถเข้าถึงส่วนขยายได้

ตรวจสอบว่าผู้ใช้ไปยังส่วนต่างๆ ของส่วนขยายได้โดยไม่ต้องใช้เมาส์ ตรวจสอบว่าป๊อปอัปใดๆ ที่ใช้สามารถไปยังส่วนต่างๆ ได้ด้วยแป้นพิมพ์ ใช้แป้นพิมพ์ลัดของ Chrome เพื่อ ดูว่าส่วนขยายนั้นไปยังส่วนต่างๆ ได้หรือไม่

ตรวจสอบว่าผู้ใช้มองเห็นส่วนต่างๆ ของอินเทอร์เฟซที่แป้นพิมพ์โฟกัสได้ง่าย โดยปกติแล้ว เส้นขอบโฟกัส จะเลื่อนไปรอบๆ อินเทอร์เฟซ แต่หากใช้ CSS มากเกินไป ระบบอาจระงับเส้นขอบหรือ ลดคอนทราสต์

เส้นขอบโฟกัสบนปุ่มค้นหา

เค้าร่างโฟกัสบนลิงก์ใดลิงก์หนึ่งในชุดลิงก์

ทางลัด

แม้ว่ากลยุทธ์การนำทางด้วยแป้นพิมพ์ที่พบบ่อยที่สุดจะเกี่ยวข้องกับการใช้แป้น Tab เพื่อหมุนโฟกัส ผ่านอินเทอร์เฟซของส่วนขยาย แต่ก็ไม่ได้เป็นตัวเลือกที่ง่ายที่สุดหรือมีประสิทธิภาพมากที่สุดเสมอไป

ตัวแฮนเดิลแป้นพิมพ์ JavaScript อย่างง่ายอาจมีลักษณะดังนี้ สังเกตว่าพร็อพเพอร์ตี้ WAI-ARIA aria-activedescendant ได้รับการอัปเดตเพื่อตอบสนองต่อข้อมูลจากผู้ใช้เพื่อแสดงปุ่มแถบเครื่องมือที่ใช้งานอยู่ปัจจุบัน

 function optionKeyEvent(event) {
  var tb = event.target;
  var buttonid;

  ENTER_KEYCODE = 13;
  RIGHT_KEYCODE = 39;
  LEFT_KEYCODE = 37;
  // Partial sample code for processing arrow keys.
  if (event.type == "keydown") {
    // Implement circular keyboard navigation within the toolbar buttons
    if (event.keyCode == ENTER_KEYCODE) {
      ExecuteButtonAction(getCurrentButtonID());
      // getCurrentButtonID defined elsewhere
    } else if (event.keyCode == event.RIGHT_KEYCODE) {
      // Change the active toolbar button to the one to the right (circular).
      var buttonid = getNextButtonID();
      // getNextButtonID defined elsewhere
      tb.setAttribute("aria-activedescendant", buttonid);
    } else if (event.keyCode == event.LEFT_KEYCODE) {
      // Change the active toolbar button to the one to the left (circular).
      var buttonid = getPrevButtonID();
      // getPrevButtonID defined elsewhere
      tb.setAttribute("aria-activedescendant", buttonid);
    } else {
      return true;
    }
    return false;
  }
}
<div role="toolbar" tabindex="0" aria-activedescendant="button1" id="tb1"
     onkeydown="return optionKeyEvent(event);"
     onkeypress="return optionKeyEvent(event);">
  <img src="buttoncut" role="button" alt="cut" id="button1">
  <img src="buttoncopy" role="button" alt="copy" id="button2">
  <img src="buttonpaste" role="button" alt="paste" id="button3">
</div>

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

จัดหาเนื้อหาที่เข้าถึงได้

การจัดหาเนื้อหาที่เข้าถึงได้เป็นสิ่งสำคัญสำหรับผู้ใช้ทุกคน หลักเกณฑ์ต่อไปนี้หลายข้ออาจฟังดูคุ้นเคย เนื่องจากเป็นแนวทางปฏิบัติที่ดีสำหรับเนื้อหาเว็บทั้งหมด

ข้อความ

ตัวเลือกแบบอักษรและขนาดข้อความส่งผลต่อความสามารถในการอ่านเนื้อหาของส่วนขยาย ผู้ใช้ที่มีปัญหาด้านสายตา อาจต้องเพิ่มขนาดข้อความของส่วนขยาย หากใช้แป้นพิมพ์ลัด โปรดตรวจสอบว่าแป้นพิมพ์ลัดเหล่านั้นไม่ รบกวนแป้นพิมพ์ลัดสำหรับการซูมที่สร้างไว้ใน Chrome

ใช้การทดสอบ 200% เป็นตัวบ่งชี้ความยืดหยุ่นของ UI ของส่วนขยาย หากเพิ่มขนาดข้อความหรือ การซูมหน้าเว็บเป็น 200% แล้วยังใช้งานได้หรือไม่

หลีกเลี่ยงการฝังข้อความลงในรูปภาพ ผู้ใช้จะปรับขนาดไม่ได้และโปรแกรมอ่านหน้าจอจะตีความรูปภาพไม่ได้ แต่ให้เลือกใช้แบบอักษรบนเว็บที่มีสไตล์แทน เช่น แบบอักษรใดแบบอักษรหนึ่งที่อยู่ใน Google Font API แบบอักษรบนเว็บสามารถปรับขนาดให้เหมาะกับขนาดต่างๆ และผู้ที่ใช้โปรแกรมอ่านหน้าจอจะเข้าถึงได้

สี

สีพื้นหลังและสีข้อความในส่วนขยายควรมีคอนทราสต์ที่เพียงพอ ใช้เครื่องมือตรวจสอบคอนทราสต์เพื่อทดสอบว่าสีพื้นหลังและสีเบื้องหน้ามีคอนทราสต์ที่เหมาะสมหรือไม่

เมื่อประเมินความคมชัด ให้ตรวจสอบว่าส่วนขยายทุกส่วนที่ต้องใช้กราฟิกเพื่อสื่อสาร ข้อมูลมองเห็นได้อย่างชัดเจน สำหรับรูปภาพที่เฉพาะเจาะจง คุณสามารถใช้เครื่องมือต่างๆ เช่น Coblis - Color Blindness Simulator เพื่อดูว่ารูปภาพมีลักษณะอย่างไรในรูปแบบต่างๆ ของความบกพร่องในการมองเห็นสี

พิจารณาเสนอธีมสีที่แตกต่างกัน หรือให้ผู้ใช้ปรับแต่งรูปแบบสีได้เพื่อสร้างคอนทราสต์ที่ดีขึ้น

เสียง

หากส่วนขยายต้องใช้เสียงหรือวิดีโอในการสื่อสารข้อมูล ให้ตรวจสอบว่ามีคำบรรยายแทนเสียงหรือ ข้อความถอดเสียง ดูข้อมูลเพิ่มเติมเกี่ยวกับคำบรรยายแทนเสียงได้ในหลักเกณฑ์ของโปรแกรมสื่อที่มีคำบรรยายแทนเสียงและคำอธิบาย

รูปภาพ

ระบุข้อความแสดงแทนที่ให้ข้อมูลสำหรับรูปภาพ

<img src="img.jpg" alt="The logo for the extension">

ใช้ข้อความแสดงแทนเพื่อระบุวัตถุประสงค์ของรูปภาพแทนที่จะอธิบายเนื้อหาของรูปภาพตามตัวอักษร รูปภาพตัวคั่นหรือรูปภาพที่ใช้ตกแต่งอย่างเดียวควรมี""ข้อความแสดงแทนที่ว่างเปล่าหรือนำออกจาก HTML ทั้งหมดและวางไว้ใน CSS

หากส่วนขยายต้องใช้ข้อความในรูปภาพ ให้ใส่ข้อความในรูปภาพไว้ในข้อความแสดงแทน แหล่งข้อมูลที่ดี ที่ควรดูคือบทความของ WebAIM เกี่ยวกับข้อความแสดงแทนที่เหมาะสม

ดูข้อมูลเพิ่มเติม

ดูข้อมูลเพิ่มเติมเกี่ยวกับการช่วยเหลือพิเศษใน Chrome ได้โดยไปที่ช่อง A11ycasts และอ่านเอกสารทางเทคนิคเกี่ยวกับการช่วยเหลือพิเศษของ Chromium