@arab789

Как реализовать видео слайдер?

Делаю видео слайдер. Имеется некоторое кол-во видео, я запускаю первое видео, по событию play(первого видео), начинаю загружать второе, по событию ended(первого видео), скрываю div первого, функцией setTimeout запускаю функцию второго , показываю div второго видео и запускаю его. Так для всех видео, последнее запускает первое. Проблема в том, что после n-го кол-ва проигрывания получается такая ошибка: Uncaught RangeError: Maximum call stack size exceeded.

Как избежать ошибки?

$(document).ready(function() {
  		start_video();

  		function start_video(){
		start_video_1();
	}

	function start_video_1 (){
		$("#hed_vid_1").fadeIn('slow');
		$('#bay_emptiness').fadeIn('slow');
		var vid_1 = document.getElementById("video_play_1");
		vid_1.play();
		$("#video_play_1").bind("play", function() {
	      	//Есть ли видео в блоке
	      	if ($('#hed_vid_2').html() == '')
	      	{
	        	$("#hed_vid_2").html('<video id="video_play_2" preload="true" ><source id="2" src="/video/shadow.mp4" type=\'video/mp4; codecs="avc1.42E01E, mp4a.40.2"\' /><source id="2" src="/video/shadow.webm" type=\'video/webm; codecs="vp8, vorbis"\' /><source id="2" src="/video/shadow.ogv" type=\'video/ogg; codecs="theora, vorbis"\' /></video>');
	      	}
    	});

    	$("#video_play_1").bind("ended", function() {
    		$('#hed_vid_1').fadeOut('slow');
			$('#bay_emptiness').fadeOut('slow');
    		timeout_id_1 = setTimeout(start_video_2, 600);
    		
    	});
	}

	function start_video_2 (){
		$('#hed_vid_2').fadeIn('slow');
  		$('#bay_shadow').fadeIn('slow');
  		var vid_2 = document.getElementById("video_play_2");
  		vid_2.play();
  		//Проверка, если видео играет, грузим следующее
  		$("#video_play_2").bind("play", function() {
      	//Есть ли видео в блоке
      		if ($('#hed_vid_3').html() == '')
      		{
      			$("#hed_vid_3").html('<video id="video_play_3" preload="true" ><source id="3" src="/video/moon_baner.mp4" type=\'video/mp4; codecs="avc1.42E01E, mp4a.40.2"\' /><source id="3" src="/video/moon2.webm" type=\'video/webm; codecs="vp8, vorbis"\' /><source id="3" src="/video/moon_baner.ogv" type=\'video/ogg; codecs="theora, vorbis"\' /></video>');
      		}
    	});
  		$("#video_play_2").bind("ended", function() {
  			$('#bay_shadow').fadeOut('slow');
			$('#hed_vid_2').fadeOut('slow');
			setTimeout(start_video, 600);
  		});
	}

	});


<div id="hed_vid_1" style="width:1920px;height:600px;">
      <video id="video_play_1" preload="true" >
            <source id="1" src="/video/the_emptiness.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' />
            <source id="1" src="/video/the_emptiness.webm" type='video/webm; codecs="vp8, vorbis"' />
            <source id="1" src="/video/the_emptiness.ogv" type='video/ogg; codecs="theora, vorbis"' />
      </video>
</div>
<div id="hed_vid_2" style="display:none;width:1920px;height:600px;"></div>
  • Вопрос задан
  • 2399 просмотров
Пригласить эксперта
Ответы на вопрос 1
AlexanderTsymbal
@AlexanderTsymbal
tsymbal.su
может это поможет? habrahabr.ru/post/167033
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
24 нояб. 2024, в 14:37
3000 руб./в час
24 нояб. 2024, в 13:04
500 руб./в час
24 нояб. 2024, в 12:29
3000 руб./за проект