2011-04-21 17 views
6

आग नहीं करता है, जब मैं एक वीडियो चलाता हूं तो एक बटन जोड़ने की कोशिश कर रहा हूं, और जब वीडियो समाप्त होता है तो छवि प्रदर्शित होती है। समस्या यह है कि दूसरी बार जब मैं बटन दबाता हूं, तो वीडियो समाप्त होता है, और ऐसा कुछ भी नहीं होता है जैसे ईवेंट श्रोता को कॉल नहीं किया जाता है।मोबाइल सफारी एचटीएमएल 5 वीडियो - घटना श्रोता 'समाप्त' दूसरी बार

var video = document.getElementById("video"); 

function playVideo() { 
    video.style.display="block"; 
    //video.load() [adding this the 2nd time wont play] 
    video.play(); 
    video.addEventListener('ended', videoEnd, false); 
} 

function videoEnd() { 
    video.style.display="none"; 
    bg_image.src="image.jpg"; 
} 
+0

मुझे लगता है कि मिल गया है video.currentTime = 0.1 जोड़ने; VideoEnd() को ईवेंट श्रोता को दूसरी बार आग लगने देगी, लेकिन तीसरी बार, यह काम नहीं करता है। – Jim

+0

मुझे इस सटीक समस्या का सामना करना पड़ रहा है, लेकिन डेस्कटॉप सफारी (5.0.5) पर। – JKS

+0

क्या आपने अपने लोड() या play() कॉल से पहले video.stop() जोड़ने का प्रयास किया था? – derrylwc

उत्तर

0

मेरा मानना ​​है कि एक वीडियो तत्व अंत तक पहुंचने पर "समाप्त" ईवेंट अब आग नहीं लगाता है। जाहिर है केवल "रोकें" घटना आग लगती है।

मुझे बस "टाइमअपडेट" ईवेंट सुनकर और एक हैंडलर विधि को जोड़कर यह मिल गया है जो जांचता है कि वर्तमान समय संपत्ति वीडियो तत्व की अवधि संपत्ति के बराबर है या नहीं।

अद्यतन: मुझे कभी-कभी आईओएस में "समाप्त" ईवेंट दिखाई देता है। मैं हमेशा "रोकें" घटना देखता हूं। यहां कुछ jQuery कोड हैं जो ब्राउज़र कंसोल में यह जानकारी प्रदर्शित करते हैं:

(function ($) { 
     $("#vid").bind("timeupdate", function (e) { 
      console.log(e.type + " - " + (this.currentTime == this.duration)); 
     }); 
    })(jQuery); 
+0

यहां एक लिखता है कि समाप्त नहीं होता है क्योंकि वीडियो कुल अवधि से पहले बंद हो जाता है: http://stackoverflow.com/questions/14714385/html-5-video-ended –

-2

टाइमअपडेट काम करता है। लेकिन, मैं तुम्हें ऐसे ही इसका इस्तेमाल करना पसंद करते हैं:

this.currentTime> = (this.duration-1)

अन्यथा, यह आग नहीं करता है एक घटना। http://www.codegrape.com/item/html5-video-background/1306

0

यह सफारी के HTML5 वीडियो टैग कार्यान्वयन में एक अजीब बग के कारण है:

आपके पास उस वीडियो भी bg खरीद सकते हैं। इसे विंडोज के लिए सफारी पर भी पुन: उत्पन्न किया जा सकता है। मुझे अभी इस समस्या के लिए एक कामकाज मिला है - बस loadedmetadata ईवेंट से बांधें और currentTime को कुछ गैर-शून्य मान पर सेट करें।

<!doctype html> 
<html> 
<head> 
<script src="http://code.jquery.com/jquery-1.9.0.min.js"></script> 
</head> 
<body> 
<video id="video" width="500" height="400" controls autoplay></video> 
<script> 
var src = [ 
"http://content.adfox.ru/131007/adfox/205544/865991_11.mp4", 
"http://all.rutube.ru/130627/gpmdigital/217059/805529_11.mp4" 
]; 
var curSrc = 0; 
$(function() { 
$('#video').attr("src", src[curSrc % src.length]); 
curSrc++; 
var video = $('#video').get(0); 

$('#video') 
.on('loadedmetadata', function() { 
    video.currentTime=0.01; 
    video.play(); 
}) 
.on('ended', function() { 
    console.log('ended'); 
    video.src = src[curSrc % src.length]; 
    video.load(); 
    curSrc++; 
}); 
}); 
</script> 
</body> 
</html> 

आप इस jsfiddle में इस डेमो कोशिश कर सकते हैं: यहाँ एक उदाहरण है http://jsfiddle.net/j2knz6sv/

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

  • कोई संबंधित समस्या नहीं^_^