प्रोटोटाइप / जावास्क्रिप्ट - फ़ायरफ़ॉक्स कुंजी दबाने / keydown घटना फायरिंग नहीं जब तक ध्यान केंद्रित पाठ बॉक्स में है

वोट
3

निम्नलिखित पर IE6, IE7, और क्रोम ठीक काम करता है। एफएफ 3.0.7 पर काम नहीं कर।

<html><head>
<script src=prototype.js type=text/javascript ></script>
<script type=text/javascript>
Event.observe(window, 'load', 
    function(){
        Event.observe(document.body, 'keydown', myEventHandler);
        alert('window load');
    });
function myEventHandler(evt) {
    alert(evt);
}
</script>
</head>
<body >
<input type=text /><br><br>
</body></html>

संपादित करें: द्वारा काम नहीं कर मेरा मतलब है myEventHandler फ़ायरफ़ॉक्स में फायरिंग नहीं है।

EDIT2: इसके अलावा, यह ठीक काम करता है जब फ़ोकस इनपुट तत्व पर है। मैं यह सब keydowns के लिए आग चाहते हैं।

10/03/2009 को 12:55
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


4 जवाब

वोट
0

एक ऐसा फ़ॉर्म तत्व के साथ इनपुट रैप करने के लिए प्रयास करें। अगर वह मदद नहीं करता है, एक div में यह ताना और div करने के लिए अपने हैंडलर देते हैं।

10/03/2009 को 13:19
का स्रोत उपयोगकर्ता

वोट
3

मैंने यह भी पाया है कि मेरी keydown घटनाओं समान कोड के लिए Firefox में फायरिंग नहीं कर रहे थे। मेरे मामले में, मैं सफारी और Firefox के अलावा और कुछ का उपयोग करने की जरूरत नहीं है, इसलिए मैं IE पर इस परीक्षण नहीं किया। फिर भी, बल्कि 'document.body' की तुलना में 'दस्तावेज़' के अवलोकन के काम करने के लिए लग रहा था:

document.observe('dom:loaded', function() {
    Event.observe(document, 'keypress', function(evt) {
       alert("In Keypress Function");
    });
});

अब, मुझे पता है इस कुंजी दबाने को देख रहा है, keydown नहीं। AFAIK, कुंजी दबाने सही keydown के बाद उत्पन्न होता है।

10/03/2009 को 13:40
का स्रोत उपयोगकर्ता

वोट
7

मुझे पता नहीं क्यों अपने कोड काम नहीं करता है, लेकिन यह बहुत ज्यादा जटिल है - यह काम कर जाना चाहिए:

document.observe('keydown', myEventHandler);

के लिए प्रतीक्षा करने की आवश्यकता नहीं है loadके रूप में documentतुरंत उपलब्ध है।


क्योंकि सभी महत्वपूर्ण घटनाओं के एक दस्तावेज के शरीर तत्व के भीतर ही शुरू आपका कोड काम नहीं करता। ओपेरा फ़ायरफ़ॉक्स में लोगों को इसी तरह के मुद्दों है, लेकिन होने वाले तत्व अतिरिक्त माउस कर्सर के स्थान पर निर्भर करने लगता है।

वैसे भी, ठीक बस पर घटनाओं को पकड़ने के लिए है document, के स्तर क्योंकि जब तक कोई उन्हें इतना तक की सभी डोम घटनाओं होगा बुलबुला करने से बंद हो जाता है के रूप में documentअंत में।

10/03/2009 को 14:15
का स्रोत उपयोगकर्ता

वोट
0

Btw, टैब, esc, और इसी तरह के लिए, आप KeyUp, नहीं कुंजी दबाने का उपयोग करने की जरूरत है। सफारी के लिए कम से कम, मुझे काफी समय लगा यह पता लगाने की है कि एक।

इस पंक्ति जोड़कर खुद के लिए देखें: alert ("Key :" + evt.keyCode);anon में। समारोह। केवल ग्लिफ़ जवाब देते हैं।

--Dave

24/05/2010 को 22:16
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more