2011-05-26 13 views
6

मेरे पास एक HTML लिंक है, और जब मैं उपयोगकर्ता से दूर टैब करता हूं तो मैं कुछ कार्रवाई करना चाहता हूं - लेकिन केवल तभी जब उपयोगकर्ता दस्तावेज़ के माध्यम से पीछे की तरफ झुकाव कर रहा हो।जावास्क्रिप्ट का उपयोग करके, आप कैसे बता सकते हैं कि कोई उपयोगकर्ता पिछड़ा टैबबिंग कर रहा है या नहीं?

क्या कोई विश्वसनीय क्रॉस-ब्राउज़र तरीका है यह पता लगाने के लिए कि उपयोगकर्ता दस्तावेज़ के माध्यम से किस प्रकार टैबबिंग कर रहा है, या वास्तव में यदि वे दस्तावेज़ के माध्यम से टैबबिंग कर रहे हैं? मैं blur ईवेंट पर बाध्यकारी हूं, लेकिन इसका मतलब यह नहीं है कि उपयोगकर्ता टैबबिंग कर रहा है।

मैं document.activeElement का मूल्य, या स्रोत में पिछले फ़ोकस करने योग्य तत्व की hasFocus विशेषता निरीक्षण पर एक नज़र लिया है, लेकिन:

    उन
  1. अपेक्षाकृत हाल ही में की तरह लग, और इस तरह नहीं हो सकता है व्यापक रूप से समर्थित, और
  2. मुझे यकीन नहीं है कि blur ईवेंट आग लगने पर वे निरीक्षण करेंगे, भले ही उपयोगकर्ता टैबबिंग कर रहा हो, मुझे नहीं लगता कि अगला तत्व अभी तक केंद्रित होगा।
+0

आपकी प्रतिष्ठा बहुत अधिक है और विशेष रूप से क्योंकि आपके पास ** जावास्क्रिप्ट **, ** एचटीएमएल ** और ** jQuery ** बैज हैं ... मैं एक प्रश्न पूछने के लिए बहुत ही अनोखा हूं थोड़ा परेशान : एस –

+1

इसके जवाब में आप क्या करना चाहते हैं? एक सामान्य अभिगम्यता दिशानिर्देश है कि आपको ध्यान में परिवर्तन के बावजूद फोकस परिवर्तन के जवाब में कभी भी 'संदर्भ बदलना' नहीं चाहिए (उदाहरण के लिए, कहीं और ध्यान केंद्रित करें, किसी दूसरे पृष्ठ पर नेविगेट करें)। यहां करने के लिए सही चीज इस बात पर निर्भर हो सकती है कि आप फोकस परिवर्तन के जवाब में क्या करने की योजना बना रहे हैं ... – BrendanMcK

+0

@ ब्रेंडनएमसीके: निश्चित - मैंने तब से उपयोगकर्ता के कीबोर्ड कार्यों के साथ इस तरह के विस्तृत झुकाव से बचने का फैसला किया है। मुझे लगता है कि पूरी बात बीमार थी। –

उत्तर

6

आपको लिंक पर keydown ईवेंट को संभालना होगा।

$("your link selector").keydown(function(evt){ 
    if (evt.which === 9) 
    { 
     if(evt.shiftKey === true) 
     { 
      // user is tabbing backward 
     } 
     else 
     { 
      // User is tabbing forward 
     } 
    } 
}); 

चेक इस JSFiddle example कि आगे और पीछे किसी विशेष लिंक पर tabbing पता लगाता है।

Sidenote: हालांकि मैं अपने जवाब में jQuery कोड प्रदान की आप अपने प्रश्न अल पर jQuery टैग निर्दिष्ट नहीं किया। चूंकि आप जावास्क्रिप्ट के साथ-साथ jQuery बैज धारण करते हैं, मुझे लगता है कि मेरे कोड को शुद्ध जावास्क्रिप्ट में परिवर्तित करने के लिए यह छोटा हो जाएगा।

+0

@Robert: निश्चित रूप से, मैं इसके बारे में सोच रहा था, लेकिन मुझे यकीन नहीं था कि शिफ्ट कुंजी का पता लगाना थोड़ा भंगुर था। ए) शिफ्ट कुंजी विश्वसनीय क्रॉस-ब्राउज़र का पता लगा रहा है? बी) शिफ्ट-टैब हमेशा उपयोगकर्ताओं के दस्तावेज़ के माध्यम से पीछे की तरफ है? उन दो सवालों का जवाब हां हो सकता है, लेकिन मैंने सोचा कि मुझे यह देखने के लिए पूछना चाहिए कि क्या मेरे पास कोई बेहतर विचार है या नहीं। –

+2

@ पॉल डी। वाइट: यह स्पर्श उपकरणों पर काम नहीं करेगा। लेकिन ज्यादातर मामलों में रॉबर्ट का समाधान बहुत अच्छा है। – oddy

+0

@Robert: महान उत्तर btw, मैं कुछ उदाहरणों के माध्यम से अपना उदाहरण चलाऊंगा और किसी भी गुप्त असंगतताओं की रिपोर्ट करूंगा। –

1

रॉबर्ट से अच्छे समाधान के विकल्प के रूप में, शायद आप tabindex विशेषता का लाभ उठा सकते हैं? इसे अपने एचटीएमएल लिंक और अन्य "टैबबल" वस्तुओं के लिए सेट करें। फिर इसे जावास्क्रिप्ट में देखें। tabindex साथ

समाधान: jsfiddle

साइड प्रभाव: तत्वों भी माउस क्लिक पर प्रतिक्रिया करेंगे। वे सही तरीके से व्यवहार करेंगे। तो यह आपकी आवश्यकताओं के आधार पर एक अच्छा दुष्प्रभाव या बुरा दुष्प्रभाव हो सकता है।