blockly > IFocusableNode

IFocusableNode इंटरफ़ेस

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

हस्ताक्षर:

export interface IFocusableNode 

तरीके

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

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

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

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

getFocusableElement()

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

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

दिखाए गए एलिमेंट में, मान्य आईडी भी दिया गया होना चाहिए. साथ ही, यह आईडी पूरे पेज पर यूनीक होना चाहिए. यूनीक आईडी न होने पर, किसी एक नोड (जैसे कि माउस क्लिक के ज़रिए) पर फ़ोकस करने की कोशिश करने से, FocusManager उसी आईडी वाले दूसरे नोड पर फ़ोकस कर सकता है.

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

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

अगर किसी नोड को सीधे तौर पर फ़ोकस करने की ज़रूरत है, तो उसे अपना टैब इंडेक्स सेट करना होगा. ऐसा तब किया जाता है, जब उसे पहले FocusManager के ज़रिए फ़ोकस नहीं किया जाता.

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

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

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

onNodeFocus()

जब इस नोड को ऐक्टिव फ़ोकस मिलता है, तब इसे कॉल किया जाता है.

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