HTML5视频停止onClose

时间:2010-05-21 02:28:05

标签: jquery html5 html5-video

我正在使用jQuery工具进行叠加。在叠加层内我有一个HTML5视频。但是,当我关闭叠加层时,视频会继续播放。我知道如何在关闭叠加层时让视频停止播放?这是我的代码:

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

我尝试使用

$('video').pause();

但这也暂停了叠加层。

9 个答案:

答案 0 :(得分:26)

如果你想阻止页面中的每个电影标签播放,这个jQuery的小片段将帮助你:

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

答案 1 :(得分:11)

使用不同的浏览器启动视频

对于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="";

答案 2 :(得分:9)

以下适用于我:

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

答案 3 :(得分:8)

问题可能在于您选择的jquery选择器 $("video")不是选择器

右侧选择器可能会为视频标记添加 id 元素,即
假设您的视频元素如下所示:

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

然后你可以通过$("#vid1")选择哈希标记(#),jquery中的id选择器。 如果视频元素在功能中公开,则您可以访问 HtmlVideoElement (HtmlMediaElement)。此元素可以控制视频元素,在您的情况下,您可以使用pause()方法来处理视频元素

检查VideoElement here的参考 另请检查是否存在后备参考here

答案 4 :(得分:7)

有人已经有了答案。

$(&#39; video&#39;)将返回一系列视频项。它完全是一个有效的seletor!

所以

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

会奏效。

答案 5 :(得分:3)

对于JQM + PhoneGap应用程序,以下内容适用于我。

以下是我必须要做的最小工作。当用户按下后退按钮时,我实际上遇到了缓冲,同时产生了ajax请求。暂停Chrome和Android浏览器中的视频会使其保持缓冲状态。非异步的ajax请求会等待缓冲完成,这是永远不会的。

将此绑定到beforepagehide事件修复它。

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

这将清除页面上的每个视频标记。

重要的部分是this.src =“”;

答案 6 :(得分:2)

我使用Firefox的经验是,将“id”属性添加到视频元素会导致Firefox完全崩溃...就像要求您提交错误报告一样。删除id元素,它工作正常。我不确定这对每个人都是如此,但我认为如果有帮助,我会分享我的经验。

答案 7 :(得分:1)

为节省数小时的编码时间,请使用已针对嵌入式视频iframe优化的jquery插件。

我花了几天时间试图将Vimeo的moogaloop API与jquery工具集成失败。有关一些简单的选项,请参阅this list

答案 8 :(得分:0)

试试这个:

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

但是,请考虑$ .browser已被弃用,但我还没有找到类似的解决方案。