С popcornjs, как воспроизводить видео и показывать сноски в один клик?
У меня есть панель навигации (меню) с 10 видео, и я хочу, чтобы каждое видео со сноской отображалось в один клик. Теперь одним щелчком мыши появляется каждое видео, но я не знаю, как обрабатывать разные сноски?
вот мой HTML:
<div id="menu">
<uL>
<li>Choose a Country:</li>
<li><a href="javascript:changeSource1();">US</a></li>
<li><a href="javascript:changeSource2();">Canada</a></li>
</ul>
</div>
<div id="content">
<div class="video-player">
<video id="videos" controls>
<source id="mp4" src="Video/(name of the video).mp4" type="video/mp4" />
<source id="ogv" src="Video/(name of the video).ogv" type="video/ogg" />
</video>
</div>
<div id="video-text">
<p id="popcorn-text">Ipsum Lorem...Aenean consectetur ornare pharetra. Praesent et urna eu justo convallis sollicitudin. Nulla porttitor mi euismod neque vulputate sodales. </p>
</div>
</div>
и вот мой код POPCORNJS, который работает только для видео:
<script>
function changeSource1()
{
document.getElementById("mp4").src= "Video/(name of the video).mp4";
document.getElementById("ogv").src= "Video/(name of the video).ogv";
document.getElementById("videos").load();
}
</script>
Как я могу иметь многофункциональный код с popcornjs (например, показывать разные сноски для каждого видео)? спасибо н
1 ответ
Вы можете иметь столько экземпляров Popcorn, сколько захотите, поэтому здесь имеет смысл иметь один экземпляр для каждого видео. И каждый экземпляр Popcorn будет иметь свой собственный набор сносок. Мы начнем с массива и настроим каждое видео динамически.
var data = [
{
src: {
mp4: 'video1.mp4', webm: 'video1.webm', ogg: 'video1.ogv'
},
footnotes: [
{
start: 2,
end: 4,
text: 'Ipsum Lorem...'
}
// etc.
]
}
// etc.
];
Теперь настройте экземпляры попкорна, загрузите данные и добавьте обработчик событий щелчка для переключения.
var activeVideo = data[0];
//Popcorn provides this handy 'forEach' helper
Popcorn.forEach(data, function(vid, i) {
var button;
vid.video = document.createElement('video');
Popcorn.forEach(vid.src, function(src, type) {
var source = document.createElement('source');
source.setAttribute('src', src);
source.setAttribute('type', 'video/' + type);
vid.video.appendChild(source);
});
vid.video.preload = true; //optional
document.getElementById('').appendChild(vid.video);
if (i) {
vid.video.style.display = 'none';
}
vid.popcorn = Popcorn(vid.video);
//every footnote needs a target
vid.popcorn.defaults('inception', {
target: 'video-text'
});
Popcorn.forEach(vid.footnotes, function(footnote) {
vid.popcorn.footnote(footnote);
});
button = document.getElementById('button' + i); // or create one here
button.addEventListener('click', function() {
//pause and hide the old one
activeVideo.popcorn.pause();
activeVideo.style.display = 'none';
activeVideo = data[i];
activeVideo.style.display = '';
activeVideo.popcorn.play();
});
});
Это должно вот-вот сделать.
Одна проблема заключается в том, что это не сработает на iPad, потому что Mobile Safari теряет сознание, если вы разместите на странице более одного видео. В этом случае просто создайте один элемент видео, а в обработчике кликов установите атрибут src (только mp4) и вызовите .load()
, Вы можете иметь несколько экземпляров Popcorn в одном теге видео, но когда вы "деактивируете" экземпляр, просто позвоните .disable('footnote')
чтобы не показывать сноски на неправильном видео и запустить enable
на активном.