رابط IFocusableNode
نشان دهنده هر چیزی است که می تواند تمرکز ورودی داشته باشد.
امضا:
export interface IFocusableNode
روش ها
روش | توضیحات |
---|---|
canBeFocused() | نشان می دهد که آیا این گره اجازه تمرکز را می دهد یا خیر. اگر این مقدار false برگرداند، هیچ یک از متدهای IFocusableNode دیگر فراخوانی نخواهد شد. توجه داشته باشید که اگر پیادهسازیهای این تابع به صورت پویا مقدار مقدار بازگشتی خود را در طول عمر گره تغییر میدهند، باید دقت شود، زیرا شرایط محیطی خاص میتواند بر قابلیت تمرکز عنصر DOM این گره تأثیر بگذارد (مانند اینکه عنصر دارای شاخص تب مثبت یا صفر باشد). همچنین، تغییر از یک مقدار درست به یک مقدار نادرست در حالی که گره فوکوس را نگه میدارد، فوراً تمرکز فعلی گره و وضعیت داخلی FocusManager را تغییر نمیدهد، و بنابراین ممکن است منجر به فراخوانی برخی از توابع گره در زمان فوکوسزدایی شود (از آنجایی که قبلاً در زمان فوکوس شدن قابل تمرکز در نظر گرفته میشد). پیادهسازیها معمولاً باید همیشه درست در اینجا برگردند، مگر اینکه شرایطی وجود داشته باشد که تحت آن این گره برای ملاحظات تمرکز باید نادیده گرفته شود. مثالها ممکن است شامل غیرفعال بودن، فقط خواندنی بودن، یک دکوراسیون صرفاً بصری، یا یک گره بدون نمایش بصری باشد که باید این رابط را پیادهسازی کند (بهعنوان مثال به دلیل گسترش رابط والد). هنگام تعیین اینکه آیا یک گره باید قابل تمرکز باشد یا خیر، بهترین شیوه های دسترسی را به خاطر داشته باشید زیرا حتی عناصر غیرفعال و فقط خواندنی هنوز هم اغلب با ارائه زمینه سازمانی به کاربران مرتبط هستند (به ویژه در هنگام استفاده از صفحه خوان). |
getFocusableElement() | عنصر DOM را که می توان به صراحت برای دریافت فوکوس درخواست کرد، برمی گرداند. مهم: لطفاً توجه داشته باشید که انتظار میرود این عنصر در صفحه حضور بصری داشته باشد، زیرا هم بهصراحت فوکوس میشود و هم سبک آن بسته به حالت فوکوس فعلی آن تغییر میکند (یعنی تار، متمرکز فعال، و فوکوس غیرفعال). این عنصر دارای یکی از دو سبک متصل خواهد بود (در جایی که هیچ سبکی نشاندهنده تاری/عدم تمرکز است): - blocklyActiveFocus - blocklyPassiveFocus عنصر برگشتی نیز باید دارای شناسه معتبر مشخص شده باشد و این شناسه باید در کل صفحه منحصر به فرد باشد. نداشتن شناسه منحصربهفرد میتواند منجر به تلاش برای متمرکز کردن یک گره (مانند با کلیک ماوس) شود که منجر به گره دیگری با همان شناسه در واقع توسط FocusManager شود. اگر گره از طریق FocusManager.focusNode() یا FocusManager.focusTree() متمرکز شده باشد، عنصر برگشتی باید قابل مشاهده باشد. مجاز است یک عنصر تا فراخوانی ()onNodeFocus مخفی شود یا با فراخوانی onNodeBlur() مخفی شود. انتظار می رود عنصر بازگشتی واقعی در طول عمر گره تغییر نکند (یعنی ویژگی های آن می تواند تغییر کند اما یک عنصر جدید هرگز نباید برگردانده شود). همچنین، عنصر بازگشتی در طول چرخه عمر این گره و FocusManager، فهرست برگه آن بازنویسی میشود. اگر یک گره نیاز به توانایی فوکوس مستقیم بدون فوکوس شدن از طریق FocusManager داشته باشد، باید فهرست برگه خود را تنظیم کند. |
getFocusableTree() | نزدیکترین درخت والد این گره را برمیگرداند (در مواردی که درخت دارای درختهای متمایز زیر آن است)، که نمایانگر درختی است که این گره به آن تعلق دارد. |
onNodeBlur() | زمانی فراخوانی می شود که این گره تمرکز فعال را از دست بدهد. ممکن است همچنان تمرکز منفعل داشته باشد. این محدودیت های پیاده سازی مشابه ()onNodeFocus را دارد. |
onNodeFocus() | زمانی فراخوانی می شود که این گره فوکوس فعال را دریافت کند. توجه داشته باشید که برای پیاده سازی ها تغییر اصلاح کننده های دید خوب است، اما آنها باید از موارد زیر اجتناب کنند: - ایجاد یا حذف عناصر DOM (از جمله از طریق رندر یا کشو). - تأثیرگذاری روی تمرکز از طریق فراخوانی های DOM focus() یا FocusManager. |