2015-03-18 13 views
6

मैं एक वीडियो प्लेयर पर काम कर रहा हूं और मैं कुछ मूल वीडियो क्रियाओं को नियंत्रित करना चाहता हूं जैसे प्ले, पॉज़, कीबोर्ड के माध्यम से खोजें। तो यहां वह कोड है जिसका उपयोग मैं कीबोर्ड ईवेंट प्राप्त करने के लिए कर रहा हूं।jquery ट्रिगर कीप्रेस घटना पर दो बार

$("#video_container_div").on("keypress", function (e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    switch (e.which) { 
    case 32: 
     { // space 
      console.info("I am in keyboard controls"); 
      $("#playpausebtn").click(); 
      break; 
     } 
    default: 
     return; 
    } 
}); 
$("#fullscreenbtn").click(function() { //bind click event on fullscreen button 
    console.info("I am in fullscreen") 
    fullscreenFun(); 
}); 

अब मुद्दा मैं का सामना करना पड़ रहा है, तो फुलस्क्रीन बटन पर उपयोगकर्ता क्लिक करें और फिर स्पेस बार दबाते हैं, तो घटना twicely निकाल दिया है। http://202.164.44.244/products/trunk/video_player/sample1.htm पहले यह वीडियो चलाता/रोकता है फिर स्वचालित रूप से पूर्णस्क्रीन या किसी भी अंतिम केंद्रित ईवेंट को निकाल दिया जाता है।

अगर मैं फुलस्क्रीन बटन और फिर स्पेस बार दबाया तो दर्शाता है कि यह सांत्वना:

I am in fullscreen 
I am in keyboard controls 
I am in fullscreen 

एक और ढेर सवाल किसी में वही समस्या के इस जवाब दिया

https://stackoverflow.com/a/17936661/1652512

यहाँ प्लेयर का लिंक:

http://202.164.44.244/products/trunk/video_player/sample1.htm 

लेकिन मुझे इसके ठोस समाधान की आवश्यकता है। मुद्दा पहले से ही मेरा पूरा दिन ले लिया।

+1

क्या आप प्लंकर लिंक प्रदान कर सकते हैं? –

+0

'fullscreenFun(); 'क्या करता है? –

+0

मैंने अभी प्रश्न संपादित किया है और लिंक का उल्लेख किया है। कृपया एक नज़र डालें –

उत्तर

3

अंतिम संपादित करें: क्षमा याचना इस एक सा लिया, यह आधी रात है और मैं थोड़ा थक गया हूँ।

आप गलत घटना का उपयोग कर रहे हैं! ध्यान दें कि मैंने फोकस के बारे में क्या कहा और "keypress" को "keydown" के साथ बस प्रतिस्थापित करें और इसे ठीक काम करना चाहिए। फोकस पूर्णस्क्रीनबीटीएन पर रहेगा लेकिन आपका कार्यक्रम ठीक से काम करेगा और e.stopPropagation() घटना को कई बार फायरिंग से रोकने के लिए पर्याप्त होगा। आपका कोड पढ़ना चाहिए:

$("#video_container_div").on("keydown", function (e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    switch (e.which) { 
     case 32: 
     { // space 
      console.info("I am in keyboard controls"); 
      $("#playpausebtn").click(); 
      break; 
     } 
     default: 
      return; 
    } 
}); 
$("#fullscreenbtn").click(function() { //bind click event on fullscreen button 
    console.info("I am in fullscreen") 
    fullscreenFun(); 
}); 

मैंने सोचा था कि वहाँ कुछ आप एक से अधिक बार ट्रिगर घटना पर stopPropagation उपयोग के बारे में अजीब था।

यह यहाँ ध्यान देने योग्य बात है कि यह केवल जब video_container_div या इसके अंदर एक तत्व केंद्रित है ट्रिगर किया जाएगा लायक है। "keydown" और "keypress" को जावास्क्रिप्ट का उपयोग किए बिना ट्रिगर करने की आवश्यकता है (यदि आप उदाहरण के लिए चाहते हैं तो आप .trigger("keydown") पर कॉल कर सकते हैं)। अगर कोई पृष्ठ पर किसी अन्य तत्व पर केंद्रित है या उसने पृष्ठ खोला है (कुछ भी ध्यान केंद्रित नहीं किया गया है) कि "keydown" ईवेंट ट्रिगर नहीं होगा।


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

$("#video_container_div").focus(); 

जोड़ने अपने

$("#fullscreenbtn").click(function() { 

घटना के अंत करने के लिए fullscreenbtn तत्व से फोकस हटा दें और देखें कि क्या वह अभी भी दो बार चलाता है करने के लिए प्रयास करें।

संपादित करें: अपनी साइट पर सटीक कोड को देखा है और मैं इस जोड़ा गया है और यह मेरे

$(h + t.$fulScrnBtn).click(function() { //bind click event on fullscreen button 
    fullscreenFun(); 
    $(h + t.$plyBtn).focus(); 
}); 

के लिए काम किया कारण यह काम कर रहा है अंत में नहीं है क्या आप फिर भी चाहते हैं। यह सब फोकस में प्ले/पॉज़ बटन डालता है, इसलिए जब कोई स्पेस बार दबाता है तो ब्राउजर उस बटन पर क्लिक के रूप में गिना जाता है, न कि क्योंकि किसी ने वीडियो पर ध्यान केंद्रित करते समय स्पेस दबाया।

+0

काम नहीं कर रहा है, फिर भी घटना को तेजी से ट्रिगर किया। –

+0

ठीक है, मैंने आपकी साइट पर सटीक कोड पर एक नज़र डाली और मैंने संपादित किया कि मेरे लिए क्या काम किया है –

+0

यह काम कर रहा है लेकिन मैंने छोटे बदलाव किए हैं, इसके बजाय $ playbtn पर ध्यान केंद्रित करना मैंने वीडियो पर ध्यान केंद्रित किया है। क्योंकि $ playBtn पर ध्यान केंद्रित एक ही समस्या पैदा करते हैं। अन्यथा मदद के लिए धन्यवाद :), –

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