दिलचस्प पोस्ट
जावा 8 में जेडीबीसी ओडीबीसी पुल का हटाया जाना अगर दो शब्द एक-दूसरे के अनचाहा हैं AngularJS में सशर्त रूप से लागू गुणों का सबसे अच्छा तरीका क्या है? "Git stash save –all" से कैसे उबरने के लिए? HttpClient और WebClient के बीच निर्णय करना क्या आपके पास एकाधिक $ (दस्तावेज़) हो सकता है .ready (function () {…}); वर्गों? registerForRemoteNotificationTypes: IOS 8.0 और बाद में समर्थित नहीं है PHP का उपयोग करने वाले क्लाइंट का मैक एड्रेस कैसे प्राप्त करें? सीएसएस फ्लोट में निम्न डिवी की चौड़ाई क्यों नहीं बदलती है? हमें XML लेआउट का उपयोग क्यों करना चाहिए? पृष्ठभूमि में एक नया टैब खोलें? यूआरएल में, क्या रिक्त स्थान को% 20 या + का उपयोग करके एन्कोड किया जाना चाहिए? ध्वनि मिश्रण करने के लिए एल्गोरिथ्म मैं पर्ल सीजीआई लिपियों को चलाने के लिए अपाचे 2 को कैसे कॉन्फ़िगर कर सकता हूं? javac1.8 वर्ग नहीं मिला

ऑडियो और वीडियो इवेंट बबल क्यों नहीं करते?

मैं सोच रहा था कि मेरा कुछ जावास्क्रिप्ट तब तक काम नहीं करेगा जब तक कि मुझे लगा कि ऑडियो इवेंट ने DOM पेड़ को बुलबुला नहीं किया, जैसे timeupdate -इवेंट।

ऑडियो- और वीडियो-टैग बबल की घटनाओं को बताने के लिए कोई तर्क है?

Solutions Collecting From Web of "ऑडियो और वीडियो इवेंट बबल क्यों नहीं करते?"

कारण घटना बुदबुदाहट मौजूद है, इस विवादास्पद प्रश्न को हल करना है कि किस तत्व को घटना के लक्ष्य का लक्ष्य है। इसलिए, यदि आप किसी div पर क्लिक करते हैं, तो क्या आप div, या उसके अभिभावक को क्लिक करने का मतलब था? यदि बच्चे में एक क्लिक हैंडलर संलग्न नहीं है, तो यह माता पिता की जांच करता है, और इसी तरह। मुझे यकीन है कि आप जानते हैं कि यह कैसे काम करता है

कारण है कि ऑडियो इवेंट बुलबुला नहीं करते क्योंकि वे किसी भी अन्य तत्व पर समझ नहीं पाते हैं। जब आप किसी ऑडियो तत्व पर timeupdate को ट्रिगर करते हैं, तो यह अस्पष्टता नहीं है कि यह ऑडियो तत्व के लिए ही है या उसके पैरेंट डिवा है, इसलिए इसे बबल करने की कोई आवश्यकता नहीं है।

आप यहां इवेंट बबुलिंग का एक फुलर इतिहास पढ़ सकते हैं

घटना प्रतिनिधिमंडल

घटना के कैप्चरिंग चरण का उपयोग करके घटना प्रतिनिधिमंडल अभी भी संभव है। AddEventListener के लिए तीसरे तर्क के रूप में सच कहें जो इस तरह दिखता है:

 document.addEventListener('play', function(e){ //e.target: audio/video element }, true); 

ध्यान दें, कि यह इवेंट बुलबुला नहीं है, लेकिन stopPropagation वृक्ष नीचे जाता है और stopPropagation साथ रोका नहीं जा सकता।

यदि आप इसे jQuery के .on / .off विधियों (उदाहरण के लिए नाम स्थान और अन्य jQuery ईवेंट एक्सटेंशन के साथ) का उपयोग करना चाहते हैं तो निम्न फ़ंक्शन, वेबसाइम लाइब्रेरी का रूप ले लिया, उपयोगी हो जाना चाहिए:

 $.createEventCapturing = (function () { var special = $.event.special; return function (names) { if (!document.addEventListener) { return; } if (typeof names == 'string') { names = [names]; } $.each(names, function (i, name) { var handler = function (e) { e = $.event.fix(e); return $.event.dispatch.call(this, e); }; special[name] = special[name] || {}; if (special[name].setup || special[name].teardown) { return; } $.extend(special[name], { setup: function () { this.addEventListener(name, handler, true); }, teardown: function () { this.removeEventListener(name, handler, true); } }); }); }; })(); 

उपयोग:

 $.createEventCapturing(['play', 'pause']); $(document).on('play', function(e){ $('audio, video').not(e.target).each(function(){ this.pause(); }); });