blockly > IFocusableNode

IFocusableNode इंटरफ़ेस

इनपुट फ़ोकस वाली किसी भी चीज़ को दिखाता है.

हस्ताक्षर:

export interface IFocusableNode 

तरीके

तरीका ब्यौरा
canBeFocused()

इससे पता चलता है कि इस नोड पर फ़ोकस किया जा सकता है या नहीं. अगर यह फ़ंक्शन गलत वैल्यू दिखाता है, तो IFocusableNode के किसी भी दूसरे मेथड को कॉल नहीं किया जाएगा.

ध्यान दें कि अगर इस फ़ंक्शन के लागू होने से, नोड के लाइफ़टाइम के दौरान उसकी रिटर्न वैल्यू डाइनैमिक तौर पर बदलती है, तो खास ध्यान रखना ज़रूरी है. ऐसा इसलिए, क्योंकि कुछ खास परिस्थितियों में इस नोड के डीओएम एलिमेंट पर फ़ोकस करने की सुविधा पर असर पड़ सकता है. जैसे, एलिमेंट का टैब इंडेक्स पॉज़िटिव है या शून्य है. इसके अलावा, अगर फ़ोकस नोड पर है, तो 'सही' से 'गलत' वैल्यू में बदलने पर, नोड का मौजूदा फ़ोकस या FocusManager की इंटरनल स्थिति तुरंत नहीं बदलेगी. इस वजह से, फ़ोकस हटाने पर नोड के कुछ फ़ंक्शन बाद में कॉल किए जा सकते हैं. ऐसा इसलिए, क्योंकि फ़ोकस होने के दौरान इसे फ़ोकस किया जा सकता था.

आम तौर पर, लागू करने की प्रोसेस यहां हमेशा 'सही' दिखाती है. ऐसा तब तक होता है, जब तक फ़ोकस पर विचार करने के लिए इस नोड को स्किप नहीं किया जाता. उदाहरण के लिए, बंद किया गया, रीड-ओनली, सिर्फ़ विज़ुअल डेकोरेशन या ऐसा कोई नोड जिसका विज़ुअल नहीं दिखाया गया है और जिसे इस इंटरफ़ेस को लागू करना होगा (उदाहरण के लिए, पैरंट इंटरफ़ेस के इसे एक्सटेंड करने की वजह से). यह तय करते समय कि किसी नोड पर फ़ोकस किया जा सकता है या नहीं, सुलभता के सबसे सही तरीकों को ध्यान में रखें. ऐसा इसलिए, क्योंकि बंद किए गए और रीड-ओनली एलिमेंट भी अक्सर उपयोगकर्ताओं को संगठन के संदर्भ देने के लिए काम के होते हैं. खास तौर पर, स्क्रीन रीडर का इस्तेमाल करते समय.

getFocusableElement()

वह डीओएम एलिमेंट दिखाता है जिस पर फ़ोकस पाने के लिए साफ़ तौर पर अनुरोध किया जा सकता है.

अहम जानकारी: कृपया ध्यान दें कि इस एलिमेंट को पेज पर विज़ुअल तौर पर दिखाया जाना चाहिए, क्योंकि इस पर साफ़ तौर पर फ़ोकस किया जाएगा. साथ ही, फ़ोकस की मौजूदा स्थिति (जैसे, धुंधला, ऐक्टिव तौर पर फ़ोकस किया गया, और पैसिव तौर पर फ़ोकस किया गया) के आधार पर, इसकी स्टाइल बदल जाएगी. एलिमेंट में इनमें से कोई एक स्टाइल अटैच होगी (जहां कोई स्टाइल धुंधला/फ़ोकस न होने का संकेत देती है): - blocklyActiveFocus - blocklyPassiveFocus

दिखाए गए एलिमेंट में भी मान्य आईडी होना चाहिए. साथ ही, यह पूरे पेज पर यूनीक होना चाहिए. सही यूनीक आईडी न होने पर, हो सकता है कि माउस क्लिक की मदद से किसी नोड पर फ़ोकस करने पर, FocusManager उसी आईडी वाले किसी दूसरे नोड पर फ़ोकस कर दे. दिखाए गए एलिमेंट का tabindex भी नेगेटिव होना चाहिए. ऐसा इसलिए, क्योंकि फ़ोकस मैनेजर खुद अपना tabindex मैनेज करेगा. साथ ही, एलिमेंट को DOM में फ़ोकस करने के लिए, tabindex मौजूद होना चाहिए.

अगर FocusManager.focusNode() या FocusManager.focusTree() के ज़रिए किसी नोड पर फ़ोकस किया जाता है, तो दिखाया गया एलिमेंट दिखना चाहिए. किसी एलिमेंट को तब तक छिपाया जा सकता है, जब तक onNodeFocus() को कॉल नहीं किया जाता या onNodeBlur() को कॉल करके उसे छिपाया नहीं जाता.

उम्मीद है कि दिखाया गया असल एलिमेंट, नोड के लाइफ़टाइम के दौरान नहीं बदलेगा. इसका मतलब है कि इसकी प्रॉपर्टी बदल सकती हैं, लेकिन नया एलिमेंट कभी नहीं दिखाया जाना चाहिए.

getFocusableTree() इस नोड के सबसे नज़दीकी पैरंट ट्री को दिखाता है. ऐसा तब होता है, जब किसी ट्री में अलग-अलग ट्री हों. यह उस ट्री को दिखाता है जिससे यह नोड जुड़ा है.
onNodeBlur()

यह तब कॉल किया जाता है, जब इस नोड से फ़ोकस हट जाता है. हालांकि, उस पर अब भी पैसिव फ़ोकस हो सकता है.

इसे लागू करने से जुड़ी पाबंदियां, onNodeFocus() जैसी ही हैं.

onNodeFocus()

जब इस नोड पर फ़ोकस किया जाता है, तब इसे कॉल किया जाता है.

ध्यान दें कि लागू करने के लिए, विज़िबिलिटी मॉडिफ़ायर में बदलाव करना ठीक है. हालांकि, उन्हें इनसे बचना चाहिए: - DOM एलिमेंट बनाना या हटाना (इसमें रेंडरर या ड्रॉअर का इस्तेमाल भी शामिल है). - DOM focus() कॉल या FocusManager की मदद से फ़ोकस पर असर डालना.