अपने आप से, document.activeElement
अभी भी एक तत्व वापस कर सकते हैं यदि दस्तावेज़ केंद्रित नहीं है (और इस प्रकार दस्तावेज़ में कुछ भी ध्यान केंद्रित नहीं है!)
आप उस व्यवहार को चाह सकते हैं, या यह बात नहीं हो सकती है (उदाहरण के लिए एक keydown
घटना के भीतर ), लेकिन अगर आपको कुछ जानने की जरूरत है तो आप वास्तव में ध्यान केंद्रित कर सकते हैं document.hasFocus()
।
निम्नलिखित आपको केंद्रित तत्व देगा यदि कोई है, या कोई और है null
।
var focused_element = null;
if (
document.hasFocus() &&
document.activeElement !== document.body &&
document.activeElement !== document.documentElement
) {
focused_element = document.activeElement;
}
यह जाँचने के लिए कि क्या किसी विशिष्ट तत्व पर ध्यान केंद्रित है, यह सरल है:
var input_focused = document.activeElement === input && document.hasFocus();
यह जांचने के लिए कि क्या कुछ भी केंद्रित है, यह फिर से अधिक जटिल है:
var anything_is_focused = (
document.hasFocus() &&
document.activeElement !== null &&
document.activeElement !== document.body &&
document.activeElement !== document.documentElement
);
Robustness Note : उस कोड में जहां यह खिलाफ चेक करता है document.body
और document.documentElement
, यह इसलिए है क्योंकि कुछ ब्राउज़र इनमें से किसी एक को लौटाते हैं या null
जब कुछ भी फोकस नहीं होता है।
अगर <body>
(या हो सकता है <html>
) के पास इसकी tabIndex
विशेषता नहीं है और इस तरह वास्तव में ध्यान केंद्रित किया जा सकता है । यदि आप एक पुस्तकालय या कुछ लिख रहे हैं और इसे मजबूत बनाना चाहते हैं, तो आपको शायद किसी भी तरह से संभालना चाहिए।
यहां ध्यान केंद्रित तत्व प्राप्त करने के लिए ( भारी - भरकम वायुरोधी) "वन-लाइनर" संस्करण है, जो वैचारिक रूप से अधिक जटिल है क्योंकि आपको शॉर्ट-सर्कुलेटिंग के बारे में जानना होगा, और y'know, यह स्पष्ट रूप से एक लाइन पर फिट नहीं होता है, आपको मानते हुए यह पठनीय होना चाहते हैं।
मैं यह एक की सिफारिश नहीं करने जा रहा हूँ। लेकिन अगर आप 1337 hax0r हैं, तो idk ... यह वहाँ है। यदि आप कुछ मामलों में मन नहीं लगाते हैं तो आप
उस || null
हिस्से को भी हटा सकते हैं false
। (आप अभी भी मिल सकता है null
अगर document.activeElement
है null
):
var focused_element = (
document.hasFocus() &&
document.activeElement !== document.body &&
document.activeElement !== document.documentElement &&
document.activeElement
) || null;
यह जांचने के लिए कि क्या कोई विशिष्ट तत्व केंद्रित है, वैकल्पिक रूप से आप घटनाओं का उपयोग कर सकते हैं, लेकिन इस तरीके के लिए सेटअप (और संभावित रूप से फाड़) की आवश्यकता होती है, और महत्वपूर्ण रूप से, एक प्रारंभिक स्थिति मानता है :
var input_focused = false;
input.addEventListener("focus", function() {
input_focused = true;
});
input.addEventListener("blur", function() {
input_focused = false;
});
आप गैर-घटना वाले तरीके का उपयोग करके प्रारंभिक स्थिति को ठीक कर सकते हैं, लेकिन फिर आप इसके बजाय इसका उपयोग कर सकते हैं।