HTML5 Video Stop onClose

Я использую инструменты jQuery для наложения. Внутри наложения у меня есть видео HTML5. Однако, когда я закрываю оверлей, видео продолжает играть. Любая идея, как я могу остановить видео, когда я закрываю оверлей? Вот код, который у меня есть:

$("img[rel]").overlay({ onClose: function() { <stop the video somehow> }, mask: { color: '#000', opacity: 0.7 }});

Я попытался использовать

$('video').pause();

Но это также приостановило наложение.

Ответы

Ответ 1

Проблема может заключаться в выборе селектора jquery $("video") не является селектором

Правильный селектор может помещать элемент id для тега видео i.e.
Скажем, ваш элемент видео выглядит следующим образом:

<video id="vid1" width="480" height="267" oster="example.jpg" durationHint="33"> 
    <source src="video1.ogv" /> 
    <source src="video2.ogv" /> 
</video> 

Затем вы можете выбрать его с помощью $("#vid1") с хэш-меткой (#), селектором id в jquery. Если элемент видео отображается в функции, то у вас есть доступ к HtmlVideoElement (HtmlMediaElement). Эти элементы имеют элемент управления элементом видео, в вашем случае вы можете использовать метод pause() для вашего видеоэлемента.

Проверьте ссылку для VideoElement здесь.
Также проверьте, есть ли резервная ссылка здесь.

Ответ 2

Если вы хотите остановить воспроизведение любого тега видео на своей странице, этот небольшой фрагмент jQuery поможет вам:

$("video").each(function () { this.pause() });

Ответ 3

Для меня работает следующее:

$('video')[0].pause();

Ответ 4

Запуск видео с различными браузерами

Для Opera 12

window.navigator.getUserMedia(param, function(stream) {
                            video.src =window.URL.createObjectURL(stream);
                        }, videoError );

Для Firefox Nightly 18.0

window.navigator.mozGetUserMedia(param, function(stream) {
                            video.mozSrcObject = stream;
                        }, videoError );

Для Chrome 22

window.navigator.webkitGetUserMedia(param, function(stream) {
                            video.src =window.webkitURL.createObjectURL(stream);
                        },  videoError );

Остановка видео с различными браузерами

Для Opera 12

video.pause();
video.src=null;

Для Firefox Nightly 18.0

video.pause();
video.mozSrcObject=null;

Для Chrome 22

video.pause();
video.src="";

Ответ 5

У кого-то уже есть ответ.

$('video') вернет массив элементов видео. Это действительно действительный селектор!

так

$("video").each(function () { this.pause() });

будет работать.

Ответ 6

Для приложения JQM + PhoneGap для меня работало следующее.

Следующим был минимум, который я должен был сделать, чтобы заставить его работать. Я действительно переживал ларек из-за буферизации, в то время как порождал аякс-запросы, когда пользователь нажал кнопку "Назад". Приостановка видео в браузере Chrome и браузере Android сохранила его буферизацию. Запрос non-async ajax застрянет в ожидании завершения буферизации, чего никогда не будет.

Связывание этого с событием beforeSthide зафиксировало его.

 $("#SOME_JQM_PAGE").live("pagebeforehide", function(event)
 {
           $("video").each(function () 
           { 
               logger.debug("PAUSE VIDEO");
               this.pause();
               this.src = "";
           });
 });

Это очистит каждый тег видео на странице.

Важной частью является this.src="";

Ответ 7

Мой опыт работы с Firefox заключается в том, что добавление атрибута 'id к элементу видео приводит к тому, что Firefox полностью разбивается... как в запросе на отправку отчета об ошибке. Удалите элемент id, и он отлично работает. Я не уверен, что это верно для всех, но я думал, что поделюсь своим опытом, если это поможет.

Ответ 8

Чтобы сэкономить часы на время кодирования, используйте плагин jquery, уже оптимизированный для встроенных видеофрагментов.

Я провел пару дней, пытаясь интегрировать API Vimeo moogaloop с помощью jquery-инструментов безуспешно. См. этот список для нескольких более простых опций.

Ответ 9

Попробуйте следующее:

if ($.browser.msie)
{
   // Some other solution as applies to whatever IE compatible video player used.
}
else
{
   $('video')[0].pause();
}

Но учтите, что $.browser устарел, но я не нашел сопоставимого решения.