次のコードでポップアップする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のオーディオが再生され続けます。ライトボックスを3回開くと、ビデオ2のオーディオも開始されます。これは継続するので、オーディオのレイヤーを互いに重ねることができます。
誰かが解決策を提案できますか?
更新: autoplay属性が削除された場合は発生しないと言えます。これは、生の<video>
オブジェクトがmediaplayerjsのものにラップされる前に再生されていることを示唆しています。可能であれば、自動再生機能が本当に欲しいです。