2011-10-17 7 views
11

कैप्चर करें मैं अपनी साइट पर किसी सुविधा के लिए आगे स्लैश (/) के लिए '1 9 1' के कुंजी प्रेस मान को कैप्चर कर रहा हूं। फ़ायरफ़ॉक्स को अपनी त्वरित खोज सुविधा के कारण हर ब्राउज़र पर ठीक काम करता है। '1 9 1' अभी भी पंजीकृत है और कार्रवाई निष्पादित की जाती है (इनपुट फ़ील्ड पर ध्यान केंद्रित करें, पॉपअप सहायता टेक्स्ट), लेकिन फोकस त्वरित खोज पर जाता है।त्वरित खोज फ़ायरफ़ॉक्स सुविधा को कैसे बाईपास करें और आगे स्लैश कीप्रेस

मैंने एक और स्टैक ओवरफ्लो प्रश्न में पढ़ा है कि फ़ायरफ़ॉक्स आगे के स्लैश को चरित्र कोड '0' के रूप में कैप्चर करता है, लेकिन उसने कुछ भी नहीं किया।

क्या कोई तरीका है कि मैं फ़ायरफ़ॉक्स त्वरित खोज को अनदेखा कर सकता हूं और आगे की स्लैश का नियंत्रण प्राप्त कर सकता हूं? जावास्क्रिप्ट और jQuery का उपयोग करना।

+2

पहले पूछें कि आपको ** ** यह करना चाहिए या नहीं। एक सामान्य नियम के रूप में, मैं कुछ भी करने से पहले दो बार (या अधिक) सोचता हूं जो ब्राउज़र के अपेक्षित व्यवहार को उपयोगकर्ता के ज्ञान और सहमति के बिना बदल देता है। ऐसा करने से ज्यादातर उपयोगकर्ताओं को निराशा और उन्मूलन करने में मदद मिलेगी। (बेशक, मैं यह आपके आवेदन के बारे में कुछ भी जानने के बिना कहता हूं; हो सकता है कि आपके पास इस व्यवहार की इच्छा रखने का एक अच्छा कारण हो।) – eaj

+0

आपकी सर्वश्रेष्ठ शर्त एक अलग शॉर्टकट कुंजी चुनने जा रही है। यहां तक ​​कि यदि आप आज इस समस्या को हल करते हैं, तो फ़ायरफ़ॉक्स पर एक नया अपडेट कहने के लिए कुछ भी नहीं है कि यह फिर से तोड़ देगा। पूरी तरह से संघर्ष से बचने के लिए सर्वश्रेष्ठ। –

+0

एक और मामला है जहां यह वास्तव में आवश्यक हो सकता है: यदि उपयोगकर्ता को "टाइपिंग शुरू करते समय टेक्स्ट के लिए खोजें" विकल्प सक्षम है तो खोज बार टेक्स्टबॉक्स के बाहर दबाए गए * किसी भी * कुंजी के लिए पॉप अप करेगा। – Herohtar

उत्तर

9

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

$(document).keydown(function(e) { 
    var _target = $(e.target); 
    var _focused = $(document.activeElement); 
    var _inputting = _focused.get(0).tagName.toLowerCase()==="textarea" || _focused.get(0).tagName.toLowerCase()==="input"; 

    ///(forward slash) key = search 
    if (!_inputting && e.keyCode===191) { 
     e.preventDefault(); 
     $("#search-input").focus(); 
     return; 
    } 
}); 
+1

'e.preventDefault()' 'keydown' ईवेंट के अंदर भी काम करता है जब उपयोगकर्ता को" टाइपिंग शुरू करते समय पाठ की खोज करें "फ़ायरफ़ॉक्स में सक्षम होता है। – Herohtar

संबंधित मुद्दे