2012-03-19 19 views
6

फायरिंग नहीं घटना मैं अपने पन्ने पर एक <video> तत्व क्या हैHTML5 वीडियो timeupdate

var v = $('#myVideo')[0]; 
v.addEventListener('timeupdate',function(){ 
    alert('I changed'); 
},false); 

अब मैं अपने कंसोल और प्रकार सक्रिय होगा:

$('#myVideo')[0].currentTime = 2; 

प्रदर्शित फ्रेम बदल जाएगा, फिर भी घटना आग नहीं जाएगी। चश्मे के अनुसार timeupdatecurrentTime was changed पर आग लगनी चाहिए, इसलिए मुझे नहीं लगता कि मैं गलत घटना का उपयोग कर रहा हूं? मैं उपयोग कर रहे सभी अन्य कार्यक्रम (यानी play & ended) ठीक काम कर रहे हैं।

वहां बहुत सारे प्रश्न हैं, फिर भी वे सभी पुरानी बग प्रतीत होते हैं? क्या यह अभी तक एक और बग है (मैंने क्रोम 17 और एफएफ 10 में परीक्षण किया है) या घटना संरचना में कुछ भी बदल दिया है? या क्या मैं कुछ पूरी तरह से अलग कर रहा हूँ?

संपादित करें: मैंने अभी देखा है कि यह समस्या तब होगी जब वीडियो अभी तक नहीं खेला गया है। तो जब मैं करता हूं:

$('#myVideo')[0].play(); 
$('#myVideo')[0].pause(); 
$('#myVideo')[0].currentTime = 2; 

घटना इस तरह की आग लग जाएगी।

उत्तर

1

तो, जैसा कि पहले से ही मेरे प्रश्न के संपादन में कहा गया है, मैंने इसे सरल और बदसूरत दृष्टिकोण के साथ हल किया। बस करें:

video.play(); 
video.pause(); 

प्लेहेड "आरंभ करने" के लिए। फिर कोई भी timeupdate ईवेंट प्राप्त करने में सक्षम होना चाहिए भले ही किसी ने कभी भी वीडियो शुरू नहीं किया हो।

एक तरफ ध्यान दें: अजीब बात यह है कि preload से auto वीडियो के प्रीलोड को ट्रिगर करता है, फिर भी यह प्लेहेड को प्रारंभ नहीं करता है।

2

ईवेंट केवल वीडियो शुरू होने के बाद ही प्रेषित किया जाता है। जैसा कि आपने बस अपनी संपादन-टिप्पणी में बताया है, जहां आप वीडियो चलाते हैं() और रोकें() वीडियो, जो वीडियो को प्रीलोड करता है। एक ही है, होना चाहिए यदि आप ऑटो के साथ प्रीलोड विशेषता का उपयोग (ऑटो = लेखक का मानना ​​है कि ब्राउज़र पृष्ठ लोड होने पूरे वीडियो को लोड करना चाहिए)

<video preload="auto|metadata|none"> 

लेकिन मैं लगता है कि आप अपने प्रश्न अपने आप को जवाब ?!

+0

तो वीडियो को पहली बार शुरू करने से पहले किसी वीडियो के प्लेहेड को स्थानांतरित करने का कोई तरीका नहीं है? – m90

+1

शायद हम क्रॉस प्रयोजनों पर बात कर रहे हैं, लेकिन आप एक वीडियो कैसे खोज सकते हैं, जिसे पहले से लोड नहीं किया गया है (या लोड हो रहा है)? क्या आपके नियंत्रण हर समय दिखाए जाते हैं? क्या आपके पास उस मामले के लिए एक छोटा सा उदाहरण है ?! ..maybe यह साइट भी मदद करता है: http: //www.w3.org/2010/05/video/mediaevents.html लाइव घटनाओं में सभी घटनाओं की सूची।आपकी विशेषता हो सकती है ?! – longilong

+0

यह थोड़ा जटिल हो सकता है, फिर भी देखें: http://goo.gl/uJyod - क्या होता है यह देखने के लिए आप '

2

उपयोग करने की घटना "टाइमअपडेट" नहीं है, मुझे लगता है कि यह "तलाश" है।
जब आप वर्तमान समय बदलते हैं, तो पहले "खोज" ईवेंट होता है, जैसे ही वीडियो चुने गए समय के साथ सिंक हो जाता है, "तलाश" ईवेंट ट्रिगर होता है।

मैंने Google 28 के साथ इसका परीक्षण किया और यह नियंत्रण पर .play() + .pause() की आवश्यकता के बिना काम किया।

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