У меня появляется окно Fancybox2 со следующим кодом:
var mediaElementPlayers = [];
$("#video_list_widget a.video_link").fancybox({
padding : 0,
width:500,
height: 360,
closeBtn: false,
content: '<video width="500" height="360" controls="controls" autoplay="autoplay" preload="auto">
<source type="video/mp4" src="http://pathtomyvideo.mp4" />
<source type="video/webm" src="http://pathtomyvideo.webm" />
</video>',
afterShow: function() {
var mediaElementPlayers = [];
$('video,audio').each(function(){
mediaElementPlayers.push(new MediaElementPlayer(this));
console.log(mediaElementPlayers);
});
},
beforeClose: function(){
for (var i=0; i<mediaElementPlayers.length; i++){
console.log(mediaElementPlayers);
mediaElementPlayers[i].pause(); // pause
mediaElementPlayers[i].setCurrentTime(0); // rewind
}
$('.fancybox-inner').empty();
},
afterClose: function (){
$('video').remove();
}
});
В первый раз, когда я нажимаю a.video_link
, он всплывает и воспроизводится нормально. Давайте назовем это Видео 1. Если я закрою лайтбокс, не останавливая видео, оно остановится и уничтожится. Без проблем.
Если я снова нажму на a.video_link
, он появится и начнется с самого начала (назовем это Видео 2), но звук из Видео 1 также будет воспроизводиться поверх него. Если я сейчас закрою лайтбокс Видео 2, звук из Видео 1 продолжит воспроизводиться. Если я открою лайтбокс в третий раз, также запустится звук из видео 2. Это продолжается, поэтому у меня может быть много слоев звука друг над другом.
Кто-нибудь может предложить решение?
Обновление: я могу сказать вам, что это не происходит при удалении атрибута автозапуска, который предполагает, что необработанный объект <video>
воспроизводится до того, как он может быть обернут в материал js медиаплеера. Мне бы очень хотелось, чтобы функция автозапуска была возможной.