JavaScript

ל-JavaScript יש תפקיד מרכזי כמעט בכל מה שאנחנו יוצרים – רכיבים דינמיים למוצרים מלאים שרצים על מסגרת JavaScript, כמו תגובה או זווית.

שימוש (או שימוש יתר) ב-JavaScript הוביל למגמות מדאיגות רבות, כמו זמני טעינה ארוכים בגלל כמויות גדולות של קוד, שימוש ב-HTML לא סמנטי והחדרה של HTML ו-CSS דרך JavaScript. וייתכן שאתם לא ברור איך הנגישות משתלבת בכל אחד מהרכיבים האלה.

ל-JavaScript יכולה להיות השפעה משמעותית על נגישות האתר. כאן נשתף כמה דפוסים כלליים לשיפור הנגישות באמצעות JavaScript, וגם פתרונות לבעיות נגישות שנובעות באמצעות frameworks של JavaScript.

אירועי טריגר

אירועי JavaScript מאפשרים למשתמשים ליצור אינטראקציה עם תוכן באינטרנט ולבצע פעולה ספציפית. אנשים רבים, כמו משתמשים בקורא מסך אנשים עם מוגבלויות מוטוריות, אנשים בלי עכבר או משטח מגע, ואחרים מסתמכים על תמיכה במקלדת כדי לבצע אינטראקציה עם האינטרנט. חשוב מאוד להוסיף תמיכה במקלדת לפעולות JavaScript, משפיעה על כל המשתמשים האלה.

נבחן אירוע מסוג קליק. אם נעשה שימוש באירוע onClick() ברכיב HTML סמנטי, כמו <button> או <a>, הוא כולל באופן טבעי גם פונקציונליות של עכבר וגם פונקציונליות של מקלדת. אבל, לפעמים פונקציונליות המקלדת לא חלה באופן אוטומטי כשאירוע onClick() נוסף לאלמנט לא סמנטי, כמו <div> גנרי.

מה אסור לעשות
<div role="button" tabindex="0" onclick="doAction()">Click me!</div>
מה מותר לעשות
<button onclick="doAction()">Click me!</button>

אפשר לראות תצוגה מקדימה של ההשוואה הזו ב-CodePen.

אם נעשה שימוש ברכיב לא סמנטי באירוע של טריגר, אירוע מקש Keydown כדי לזהות הקשה על Enter או על מקש הרווח. הוספת אירועי הפעלה אל יסודות שאינם סמנטיים נשכחים לעיתים קרובות. לצערנו, כששכחתם אותו, התוצאה היא רכיב שניתן לגשת אליו רק באמצעות עכבר. מקלדת בלבד המשתמשים נשארים ללא גישה לפעולות שמשויכות אליהם.

כותרות דפים

כמו שלמדנו במודול המסמכים, כותרת הדף חיונית למשתמשים בקורא מסך. הוא מציין למשתמשים באיזה דף במצב מופעל ואם הם עברו לדף חדש.

אם אתם משתמשים ב-JavaScript framework, עליכם לשקול את האופן שבו אתם מטפלים בדף כותרות. חשוב במיוחד אפליקציות בדף יחיד (SPA) שנטענים מקובץ index.html יחיד, כמו מעברים או נתיבים (דף שינויים) לא יכלול טעינה מחדש של הדף. בכל פעם שמשתמש טוען דף חדש ב- SPA, הכותרת לא תשתנה כברירת מחדל.

לשירותי SPA, יש להזין את המסמך document.title ניתן להוסיף באופן ידני או באמצעות חבילת סיוע (בהתאם JavaScript framework). אנחנו מכריזים על כותרות דפים מעודכנות למשתמש בקורא מסך נדרשת עבודה נוספת, אבל החדשות הטובות הן יש לך אפשרויות, כמו תוכן דינמי.

תוכן דינמי

אחת מהפונקציות העוצמתיות ביותר של JavaScript היא היכולת להוסיף HTML ו-CSS לכל רכיב בדף. מפתחים יכולים ליצור אפליקציות דינמיות על סמך הפעולות או ההתנהגות של המשתמשים.

נניח שעליך לשלוח הודעה למשתמשים כשהם מתחברים לאתר שלך או לאפליקציה. אתם רוצים שההודעה תבלוט בין הרקע הלבן לבין הממסר ההודעה: "התחברת עכשיו".

אפשר להשתמש ברכיב innerHTML כדי להגדיר את התוכן:

document.querySelector("#banner").innerHTML = '<p>You are now logged in</p>';

אפשר להפעיל CSS באופן דומה, עם setAttribute:

document.querySelector("#banner").setAttribute("style", "border-color:#0000ff;");

כוח גדול מגיע לאחריות גדולה. לצערנו, JavaScript בעבר נעשה שימוש לרעה בהחדרת HTML ו-CSS כדי ליצור תכנים לא נגישים תוכן. הנה רשימה של שימושים נפוצים לרעה:

אפשרות לשימוש לרעה שימוש נכון
עיבוד של מקטעי HTML לא סמנטיים רינדור חלקים קטנים יותר של HTML סמנטי
לא מאפשרים לטכנולוגיה מסייעת לזהות תוכן דינמי שימוש בעיכוב של setTimeout() כדי לאפשר למשתמשים לשמוע את ההודעה המלאה
המערכת מחילה מאפייני סגנון על onFocus() באופן דינמי יש להשתמש ב-:focus לרכיבים הקשורים בגיליון הסגנונות של ה-CSS
החלת סגנונות מוטבעים עלולה לגרום לכך שגיליונות סגנונות של משתמשים לא ייקראו כראוי כדאי לשמור את הסגנונות בקובצי CSS כדי לשמור על עקביות של העיצוב
יצירת קובצי JavaScript גדולים מאוד שמאטים את הביצועים הכוללים של האתר להשתמש בפחות JavaScript. ייתכן שתוכלו לבצע פונקציות דומות ב-CSS (כמו אנימציות או ניווט במיקום קבוע), שמנתחים נתונים מהר יותר ויניבו ביצועים טובים יותר.

ב-CSS, צריך להחליף את המצב של מחלקות CSS במקום להוסיף סגנונות מוטבעים, כך: שמאפשר שימוש חוזר ופשטות. להשתמש בתוכן מוסתר בדף החלפת מצב של מחלקות כדי להסתיר ולהציג תוכן עבור HTML דינמי. אם צריך להשתמש JavaScript להוספה דינמית של תוכן לדף שלך, כדי לוודא שהוא פשוט מקוצרים, וכמובן גם נגישים.

ניהול מיקוד

במודול התמקדות במקלדת דיברנו על זה. סגנונות סידוריים ואינדיקטורים. ניהול מיקוד יודע מתי ואיפה לצלם את המיקוד ומתי הוא לא אמור להיקלט.

ניהול הריכוזים חיוני למשתמשים שמשתמשים במקלדת בלבד.

רמת הרכיב

אפשר ליצור מלכודות מקלדת כשהמיקוד של רכיב לא מנוהל כראוי. מלכודת מקלדת מתרחשת כאשר משתמש עם מקלדת בלבד נתקע ברכיב, או לא כל מה שצריך לעשות הוא לשמור על המיקוד.

אחד מהדפוסים הנפוצים ביותר שבהם יש למשתמשים בעיות בניהול ריכוז נמצא ברכיב של מודל. כשמשתמש עם מקלדת בלבד נתקל בחלון מודאלי, המשתמש צריכה להיות מסוגלת לעבור בין הרכיבים שבהם אפשר לבצע פעולה של המודל, אבל אסור לאפשר מחוץ לחלון העזר בלי לסגור אותו באופן מפורש. JavaScript חיוני כדי לצלם את המיקוד הזה בצורה תקינה.

מה אסור לעשות
מה מותר לעשות

רמת הדף

יש לשמור על המיקוד גם כשהמשתמש מנווט מדף לדף. הדבר במיוחד באפליקציות ספאמיות, ללא רענון דפדפן, וכל התוכן משתנה באופן דינמי. בכל פעם שמשתמש לוחץ על קישור כדי לעבור לאתר לדף אחר באפליקציה, המיקוד נשמר באותו מיקום או להיות ממוקם במקום אחר לגמרי.

בעת מעבר בין דפים (או ניתוב), צוות הפיתוח צריך להחליט היעד שאליו עובר המיקוד כשהדף נטען.

יש כמה שיטות לעשות את זה:

  • מתמקדים במאגר הראשי עם ההודעה aria-live.
  • כדי לדלג לתוכן הראשי, צריך להחזיר את המיקוד לקישור.
  • מעבירים את המיקוד לכותרת ברמה העליונה של הדף החדש.

המקום שבו תחליטו להתמקד תלוי במסגרת שבה תשתמשו ואת התוכן שרוצים להציג למשתמשים. יכול להיות שהוא קשור להקשר תלויה בפעולה.

ניהול מדינה

תחום נוסף שבו JavaScript הוא קריטי לנגישות הוא ניהול מצבים, או כשהמצב החזותי הנוכחי של רכיב או דף מועבר למשתמש עם ליקויי ראייה, עיוורים או לקויי ראייה.

לעיתים קרובות, המצב של רכיב או דף מנוהל באמצעות מאפייני ARIA, שמוצג במודול ARIA ו-HTML. נפרט כמה מהסוגים הנפוצים ביותר של מאפייני ARIA שמשמשים לעזרה לנהל את המצב של רכיב.

רמת הרכיב

בהתאם לתוכן הדף ולמידע שהמשתמשים צריכים, יש הרבה מצבי ARIA שיש להביא בחשבון כשמעבירים מידע על רכיב למשתמש.

לדוגמה, אפשר להשתמש aria-expanded כדי לציין למשתמש אם תפריט נפתח או רשימה מורחבת במצב מכווץ.

לחלופין, אפשר להשתמש ב-aria-pressed כדי לציין שנלחץ על לחצן.

חשוב לבחור במאפייני ARIA כשמחילים מאפיינים מסוג ARIA. חשבו על של המשתמש כדי להבין איזה מידע קריטי צריך להעביר למשתמש.

רמת הדף

בדרך כלל מפתחים משתמשים באזור סמוי שנקרא אזור פעיל של ARIA הודעה על שינויים במסך והתראה על הודעות לטכנולוגיה מסייעת משתמשי (AT). אפשר להתאים את האזור הזה ל-JavaScript כדי להודיע למשתמשים על משתנה בדף בלי שתידרש טעינה מחדש של כל הדף.

בעבר, JavaScript התקשה להכריז על תוכן aria-live ולהתריע על אזורים בגלל האופי הדינמי שלו. הוספה אסינכרונית של תוכן אל ה-DOM מקשה על AT לתפוס את האזור ולהכריז עליו. כדי שהתוכן ייקרא כראוי, האזור שבו פועלת ההתראה או השידור החי צריך להיות DOM בזמן הטעינה, ניתן להחליף את הטקסט באופן דינמי.

אם אתם משתמשים ב-JavaScript, החדשות הטובות הן שכמעט לכולם יש "שידור חי קריין" חבילה שעושה את כל העבודה בשבילכם נגיש. אין צורך לדאוג לגבי יצירת אזור פעיל וטיפול לפתרון הבעיות שתוארו בקטע הקודם.

הנה כמה חבילות פעילות ל-frameworks נפוצות של JavaScript:

JavaScript מודרני הוא שפה חזקה שמאפשרת למפתחי אינטרנט ליצור יישומי אינטרנט חזקים. לפעמים זה מוביל להנדסה יתר תוסף, דפוסים לא נגישים. אם תפעלו בהתאם לתבניות ולטיפים של JavaScript במודול הזה תוכלו להפוך את האפליקציות שלכם לנגישות יותר לכל המשתמשים.

בדיקת ההבנה

בוחנים את הידע שלכם ב-JavaScript

מהי הדרך הטובה ביותר לשנות סגנון של רכיב באמצעות JavaScript?

השתמשו ב-JavaScript כדי להחיל סגנון דינמי ישירות בתוך רכיב HTML.
המצב הזה מוביל ליצירת קובצי JavaScript המפוצלים, והוא לא יעיל.
שימוש ב-JavaScript כדי להפעיל או להשבית מחלקה של רכיב, ולהוסיף את הסגנון לגיליון הסגנון של ה-CSS.
כדי לשנות את שם המחלקה, השאירו את הסגנון בגיליון הסגנונות של ה-CSS והשתמשו ב-JavaScript קומפקטי.

האם כל הפעולות של JavaScript יכולות לתמוך במשתמשים במקלדת?

כן, אבל ייתכן שיהיה צורך בעבודה נוספת.
HTML סמנטי תומך במשתמשים במקלדת כברירת מחדל, אבל באלמנטים לא סמנטיים עם פעולות נדרש JavaScript נוסף.
כן, כל הפעולות תומכות באופן אוטומטי במשתמשים במקלדת.
רק HTML סמנטי תומך באופן אוטומטי במיקוד במקלדת.
לא, אפשר לתמוך רק במשתמשי מקלדת עם HTML סמנטי.
כל רכיבי ה-HTML יכולים לתמוך במשתמשים במקלדת.