blockly > IFocusableNode

הממשק IFocusableNode

מייצג כל דבר שיכול להיות ממוקד לקלט.

Signature:

export interface IFocusableNode 

Methods

שיטה תיאור
canBeFocused()

מציין אם אפשר להתמקד בצומת הזה. אם הפונקציה מחזירה false, אף אחת מהשיטות האחרות של IFocusableNode לא תיקרא.

חשוב לשים לב שצריך לנקוט משנה זהירות אם ההטמעות של הפונקציה הזו משנות באופן דינמי את ערך ההחזרה שלה במהלך מחזור החיים של הצומת, כי תנאים סביבתיים מסוימים יכולים להשפיע על האפשרות להתמקד ברכיב ה-DOM של הצומת הזה (למשל, אם לרכיב יש tabindex חיובי או אפס). בנוסף, שינוי מערך TRUE לערך FALSE בזמן שהצומת נמצא במוקד לא ישנה באופן מיידי את המוקד הנוכחי של הצומת או את המצב הפנימי של FocusManager, ולכן יכול להיות שחלק מהפונקציות של הצומת יופעלו מאוחר יותר כשהמוקד יוסר (כי הוא נחשב בעבר כצומת שאפשר להעביר אליו את המוקד בזמן שהמוקד היה עליו).

בדרך כלל, ההטמעות צריכות להחזיר כאן תמיד את הערך true, אלא אם יש נסיבות שבהן צריך לדלג על הצומת הזה משיקולי מיקוד. דוגמאות: השבתה, קריאה בלבד, קישוט ויזואלי בלבד או צומת ללא ייצוג ויזואלי שחייב להטמיע את הממשק הזה (למשל, בגלל שממשק אב מרחיב אותו). חשוב לזכור את השיטות המומלצות בנושא נגישות כשקובעים אם צומת צריך להיות ניתן למיקוד, כי גם רכיבים מושבתים ולקריאה בלבד עדיין רלוונטיים בדרך כלל למתן הקשר ארגוני למשתמשים (במיוחד כשמשתמשים בקורא מסך).

getFocusableElement()

מחזירה את רכיב ה-DOM שאפשר לבקש במפורש להעביר אליו את המיקוד.

חשוב: הרכיב הזה אמור להיות גלוי בדף, כי הוא יקבל פוקוס באופן מפורש והסגנון שלו ישתנה בהתאם למצב הפוקוס הנוכחי שלו (כלומר, מטושטש, בפוקוס פעיל ובפוקוס פסיבי). לאלמנט יצורף אחד משני סגנונות (אם לא מצורף סגנון, המשמעות היא שהאלמנט מטושטש או לא בפוקוס): - blocklyActiveFocus - blocklyPassiveFocus

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

האלמנט שמוחזר חייב להיות גלוי אם הצומת מתמקד אי פעם באמצעות FocusManager.focusNode()‎ או FocusManager.focusTree()‎. מותר להסתיר אלמנט עד שמתבצעת קריאה ל-onNodeFocus()‎, או להסתיר אותו באמצעות קריאה ל-onNodeBlur()‎.

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

אם צריך להגדיר מיקוד ישיר לצומת בלי להגדיר קודם מיקוד דרך FocusManager, צריך להגדיר לצומת את אינדקס ה-Tab שלו.

getFocusableTree() הפונקציה מחזירה את עץ ההורה הכי קרוב של הצומת הזה (במקרים שבהם לעץ יש עצים נפרדים מתחתיו), שמייצג את העץ שאליו הצומת הזה שייך.
onNodeBlur()

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

יש לה את אותן הגבלות הטמעה כמו ל-onNodeFocus().

onNodeFocus()

הפונקציה נקראת כשהצומת הזה מקבל מיקוד פעיל.

שימו לב: אפשר לשנות את משני הנראות בהטמעות, אבל צריך להימנע מהפעולות הבאות: – יצירה או הסרה של רכיבי DOM (כולל באמצעות כלי העיבוד או מגירת האפליקציה). ‫- השפעה על המיקוד באמצעות קריאות ל-DOM focus() או ל-FocusManager.