用jquery停止youtube视频?

wes*_*bos 50 javascript youtube jquery

我有一个我建立的jquery滑块,基本上只有三个pannels通过应用负的左CSS值滑动.效果很好,但我在一张幻灯片中有一个youtube视频,当我滑动时它不会停止.我尝试过display:none和Visibility:hidden除了IE以外都可以使用,音频一直在IE浏览器中.

有一种简单的方法可以用jquery杀死视频吗?

小智 87

此解决方案简单,优雅,适用于所有浏览器:

var video = $("#playerid").attr("src");
$("#playerid").attr("src","");
$("#playerid").attr("src",video);
Run Code Online (Sandbox Code Playgroud)

  • 非常棒的解决方案,如果您不介意重置视频,则效果很好. (8认同)
  • 这个解决方案的惊人之处在于我在建议之后使用它超过3年,它仍然是我发现实施的最简单的解决方案. (2认同)

cob*_*bal 37

来自API文档:

player.stopVideo()
Run Code Online (Sandbox Code Playgroud)

所以在jQuery中:

$('#playerID').get(0).stopVideo();
Run Code Online (Sandbox Code Playgroud)

  • Awesom解决方案.对于wesbos:PlayerID不是youtube iframe的ID,而是围绕youtube iframe的div.例如 - <div id ="playerID"> <object width ="853"height ="505"> ........ </ object> </ div> (3认同)
  • 实际上,它似乎比我最初想象的要复杂。它需要Flash 8+,并且您需要在网址中添加“&enablejsapi = 1”。然后,您必须确定是在embed标签还是object标签上调用函数 (2认同)

小智 19

1.include

<script type="text/javascript" src="http://www.youtube.com/player_api"></script>
Run Code Online (Sandbox Code Playgroud)

2.添加你的youtube iframe.

<iframe id="player" src="http://www.youtube.com/embed/YOURID?rel=0&wmode=Opaque&enablejsapi=1" frameborder="0"></iframe>
Run Code Online (Sandbox Code Playgroud)

3.疯狂的时间.

      <script>
            var player;
            function onYouTubePlayerAPIReady() {player = new YT.Player('player');}
            //so on jquery event or whatever call the play or stop on the video.
            //to play player.playVideo();
            //to stop player.stopVideo();
     </script>
Run Code Online (Sandbox Code Playgroud)

  • 我试过了,元素'player.stopVideo()'回来了,因为没有被定义.我错过了什么? (3认同)

Fai*_*eef 19

要开始播放视频

var videoURL = $('#playerID').prop('src');
videoURL += "&autoplay=1";
$('#playerID').prop('src',videoURL);
Run Code Online (Sandbox Code Playgroud)

停止视频

var videoURL = $('#playerID').prop('src');
videoURL = videoURL.replace("&autoplay=1", "");
$('#playerID').prop('src','');
$('#playerID').prop('src',videoURL);
Run Code Online (Sandbox Code Playgroud)

您可能希望将"&autoplay = 1"替换为"?autoplay = 1",因为没有其他参数

适用于FF和Chrome上的vimeo和youtube

  • 简单又好.我不知道为什么你没有得到更多的选票. (2认同)
  • 谢谢你的回答. (2认同)

Fel*_*lix 17

我之前遇到过这个问题,我得出的结论是,在IE中停止视频的唯一方法是将其从DOM中删除.

  • `$(playerDiv)一个.remove();` (4认同)
  • @cobbal:你可以做`var $ player = $(playerDiv).detach();` (4认同)

小智 8

我遇到了同样的问题.在我做了很多替代方案之后,只需使用相同的URL重置embed src ="".

代码段:

  $("#videocontainer").fadeOut(200);<br/>
  $("#videoplayer").attr("src",videoURL);
Run Code Online (Sandbox Code Playgroud)

当我隐藏它时,我能够至少停止播放视频.:-)


Dav*_*Sag 7

我对现代YouTube embed格式的解决方案如下.

假设iframe您的视频正在播放id="#video",那么这个简单的Javascript就可以完成这项工作.

$(document).ready(function(){
  var stopVideo = function(player) {
    var vidSrc = player.prop('src');
    player.prop('src', ''); // to force it to pause
    player.prop('src', vidSrc);
  };

  // at some appropriate time later in your code
  stopVideo($('#video'));

});
Run Code Online (Sandbox Code Playgroud)

我已经看到了这个问题的建议解决方案涉及使用YouTube API,但如果您的网站不是https网站,或者您的视频是使用YouTube推荐的现代格式嵌入的,或者如果您no-cookies设置了选项,那么这些解决方案不会工作,你得到" 电视机到死通道 "效果,而不是你的视频.

我已经在我能够完成的每个浏览器上测试了上述内容并且它非常可靠.


tal*_*ony 5

如果您在 iframe src 中有 autoplay 属性,则重新加载 src attr/prop 无济于事,因此您必须将 autoplay=1 替换为autoplay=0

  var stopVideo = function(player) {
    var vidSrc = player.prop('src').replace('autoplay=1','autoplay=0');
    player.prop('src', vidSrc);
  };

  stopVideo($('#video'));
Run Code Online (Sandbox Code Playgroud)