मैंने उपरोक्त उत्तरों को स्कैन किया और प्रस्तावित keydown
/ keyup
दृष्टिकोण केवल विशेष परिस्थितियों में काम करता है। यदि उपयोगकर्ता ऑल्ट-टैब को दूर करता है, या एक नई ब्राउज़र विंडो या टैब खोलने के लिए एक प्रमुख इशारे का उपयोग करता है, तो एक keydown
वसीयत पंजीकृत होगी, जो ठीक है, क्योंकि उस समय यह बताना असंभव है कि क्या कुंजी वेब ऐप की निगरानी कर रही है। , या एक मानक ब्राउज़र या OS शॉर्टकट है। ब्राउज़र पेज पर वापस आ रहा है, यह अभी भी लगता है कि कुंजी आयोजित की जाती है, हालांकि इस बीच जारी किया गया था। या कुछ कुंजी बस रखी जाती है, जबकि उपयोगकर्ता माउस के साथ किसी अन्य टैब या एप्लिकेशन पर स्विच कर रहा है, फिर हमारे पृष्ठ के बाहर जारी किया गया है।
संशोधक कुंजियों ( Shift
आदि) के माध्यम से निगरानी की जा सकती mousemove
है, यह मानते हुए कि वापस टैब करते समय कम से कम एक माउस इंटरैक्शन अपेक्षित है, जो अक्सर होता है।
सबसे अन्य सभी चाबियाँ के लिए (संशोधक को छोड़कर, Tab
, Delete
, लेकिन सहित Space
, Enter
), निगरानी keypress
सबसे अनुप्रयोगों के लिए काम करेगा - एक कुंजी के दबे आग के लिए जारी रहेगा। keypress
फायरिंग की आवधिकता के कारण कुंजी को रीसेट करने में कुछ विलंबता है । असल में, अगर keypress
फायरिंग नहीं होती है, तो अधिकांश चाबियों को नियंत्रित करना संभव है। यह, संशोधक के साथ संयुक्त बहुत वायुरोधी है, हालांकि मैंने यह नहीं पता लगाया है कि क्या करना है Tab
और क्या करना है Backspace
।
मुझे यकीन है कि वहाँ कुछ पुस्तकालय है जो इस DOM कमजोरी पर अमूर्त है, या शायद कुछ DOM मानक परिवर्तन ने इसका ध्यान रखा, क्योंकि यह एक बहुत बड़ा सवाल है।