Подтвердить что ты не робот

Остановить видео с YouTube с помощью jquery?

У меня есть ползунок jquery, который я создал, в основном только три панели, которые скользят, применяя отрицательные значения слева CSS. Отлично работает, но у меня есть видео с YouTube на одном слайде, который не останавливается, когда я сползаю. Я пробовал отображение: нет и видимость: скрытый, который работает во всех, кроме IE, звук продолжает работать в IE.

Есть ли простой способ убить видео с помощью jquery?

4b9b3361

Ответ 1

из API-документов:

player.stopVideo()

поэтому в jQuery:

$('#playerID').get(0).stopVideo();

Ответ 2

Это решение прост, элегантен и работает во всех браузерах:

var video = $("#playerid").attr("src");
$("#playerid").attr("src","");
$("#playerid").attr("src",video);

Ответ 3

1. включить

<script type="text/javascript" src="http://www.youtube.com/player_api"></script>

2.add ваш youtube iframe.

<iframe id="player" src="http://www.youtube.com/embed/YOURID?rel=0&wmode=Opaque&enablejsapi=1" frameborder="0"></iframe>

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>

Ответ 4

У меня была эта проблема раньше, и вывод, который я пришел, заключается в том, что единственный способ остановить видео в IE - удалить его из DOM.

Ответ 5

Чтобы начать видео

var videoURL = $('#playerID').prop('src');
videoURL += "&autoplay=1";
$('#playerID').prop('src',videoURL);

Чтобы остановить видео

var videoURL = $('#playerID').prop('src');
videoURL = videoURL.replace("&autoplay=1", "");
$('#playerID').prop('src','');
$('#playerID').prop('src',videoURL);

Вы можете заменить "& autoplay = 1" на "? autoplay = 1", если нет дополнительных параметров

работает как для vimeo, так и для youtube на FF и Chrome

Ответ 6

У меня была та же проблема. После множества альтернатив я сделал только reset embed src="" с тем же URL-адресом.

Фрагмент кода:

  $("#videocontainer").fadeOut(200);<br/>
  $("#videoplayer").attr("src",videoURL);

Я смог по крайней мере остановить воспроизведение видео, когда я его скрою.: -)

Ответ 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'));

});

Я видел предлагаемые решения этой проблемы, связанные с использованием YouTube API, но если ваш сайт не является сайтом https, или ваше видео встроено в современный формат, рекомендованный YouTube, или если у вас есть no-cookies, тогда эти решения не работают, и вместо вашего видео вы получаете эффект "ТВ-приемник мертвого канала".

Я тестировал выше в каждом браузере, на котором я мог положиться, и он работает очень надежно.

Ответ 8

К сожалению, если атрибут id тега объекта не существует, play/stop/pauseVideo() не работают IE.

<object style="display: block; margin-left: auto; margin-right: auto;" width="425" height="344" data="http://www.youtube.com/v/7scnebkm3r0&amp;fs=1&amp;border=1&amp;autoplay=1&amp;enablejsapi=1&amp;version=3" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" />
  <param name="allowscriptaccess" value="always" />
  <param name="allowfullscreen" value="true" />
  <param name="src" value="http://www.youtube.com/v/7scnebkm3r0&amp;fs=1&amp;border=1&amp;autoplay=1&amp;enablejsapi=1&amp;version=3" />
</object>
<object id="idexists" style="display: block; margin-left: auto; margin-right: auto;" width="425" height="344" data="http://www.youtube.com/v/pDW47HNaN84&amp;fs=1&amp;border=1&amp;autoplay=1&amp;enablejsapi=1&amp;version=3" type="application/x-shockwave-flash">
  <param name="allowscriptaccess" value="always" />
  <param name="allowFullScreen" value="true" />
  <param name="src" value="http://www.youtube.com/v/pDW47HNaN84&amp;fs=1&amp;border=1&amp;autoplay=1&amp;enablejsapi=1&amp;version=3" />
</object>
<script>
  function pauseVideo()
  {
    $("object").each
    (
      function(index)
      {
        obj = $(this).get(0);
        if (obj.pauseVideo) obj.pauseVideo();
      }
    );
  }
</script>
<button onClick="pauseVideo();">Pause</button>

Попробуйте!

Ответ 9

Ну, там гораздо более простой способ сделать это. Когда вы захватываете ссылку для видео youtube, прокрутите вниз немного, и вы увидите несколько вариантов: iFrame Embed, использовать старые встроенные, связанные видео и т.д. Там выберите Использовать старую ссылку для вставки. Это решает проблему.

Ответ 10

Это работает для меня как на YouTube, так и на Vimeo. Я просто просто перезагружаю атрибут src, поэтому имейте в виду, что видео вернется к началу.

var $theSource = $theArticleDiv.find('.views-field-field-video-1 iframe').attr('src');

$theArticleDiv.find('.views-field-field-video-1 iframe').attr('src', $theSource); //reset the video so it stops playing

$theArticleDiv - это мой текущий видеоконтейнер, поскольку у меня есть несколько видеороликов на странице, и они отображаются через представление Drupal во время выполнения, я не знаю, какими будут их идентификаторы. Поэтому я связал событие muy click с видимым в данный момент элементом, нашел его родителя и решил, что $theArticleDiv.

('. views-field-field-video-1 iframe') находит текущий видеофрагмент для меня - в частности тот, который виден прямо сейчас. Этот iframe имеет атрибут src. Я просто подбираю это и reset вернусь к тому, что он уже был, и автоматически видео останавливается и возвращается к началу. Если мои пользователи хотят сделать паузу и возобновить, они могут сделать это, не закрывая видео, конечно, но, откровенно говоря, если они закрывают видео, я чувствую, что они могут жить с тем, что он reset к началу.

НТН

Ответ 11

Мне потребовалось немного разведки, чтобы разобраться с этим, но я решил эту кросс-браузерную реализацию:

HTML

<div class="video" style="display: none">
    <div class="mask"></div>
    <a href="#" class="close-btn"><span class="fa fa-times"></span></a>
    <div class="overlay">
        <iframe id="player" width="100%" height="70%" src="//www.youtube.com/embed/Xp697DqsbUU" frameborder="0" allowfullscreen></iframe>
    </div>
</div>

JQuery

$('.launch-video').click(function() {
  $('.video').show();
  $("#player").attr('src','//www.youtube.com/embed/Xp697DqsbUU'); 
});

$('.close-btn').click(function() {
  $('.video').hide();
  $("#player").attr('src','');   
});

По сути, это открыть мой лайтбокс и заполнить мой атрибут src, и при закрытии просто удалите значение src (затем повторно запустим его при открытии).

Ответ 12

Я получил это для работы во всех современных браузерах, включая IE9 | IE8 | IE7. Следующий код откроет ваше видео YouTube в диалоговом окне jQuery UI modal, автоматически запустит видео с 0:00 в диалоговом окне и остановит видео в диалоговом окне.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js" type="text/javascript"></script>
<script src="http://www.google.com/jsapi" type="text/javascript"></script>    

<script type="text/javascript">

    google.load("swfobject", "2.1");

    function _run() {
        /* YouTube player embed for modal dialog */
        // The video to load.
        var videoID = "INSERT YOUR YOUTUBE VIDEO ID HERE"
        // Lets Flash from another domain call JavaScript
        var params = { allowScriptAccess: "always" };
        // The element id of the Flash embed
        var atts = { id: "ytPlayer" };
        // All of the magic handled by SWFObject (http://code.google.com/p/swfobject/)
        swfobject.embedSWF("http://www.youtube.com/v/" + videoID + "?version=3&enablejsapi=1&playerapiid=player1&autoplay=1",
                       "videoDiv", "879", "520", "9", null, null, params, atts);
    }
    google.setOnLoadCallback(_run);

    $(function () {
        $("#big-video").dialog({
            autoOpen: false,
            close: function (event, ui) {
                ytPlayer.stopVideo() // stops video/audio on dialog close
            },
            modal: true,
            open: function (event, ui) {
                ytPlayer.seekTo(0) // resets playback to beginning of video and then plays video
            }
        });

        $("#big-video-opener").click(function () {
            $("#big-video").dialog("open");
            return false;
        });

    });
</script>

<div id="big-video" title="Video">
    <div id="videoDiv">Loading...</div>
</div>

<a id="big-video-opener" class="button" href="#">Watch the short video</a>

Ответ 13

На самом деле вам нужен только javascript и правильно встраивать видео youtube с swfobject google library

Это пример

<script type="text/javascript" src="swfobject.js"></script>    
<div style="width: 425; height: 356px;">
  <div id="ytapiplayer">
    You need Flash player 8+ and JavaScript enabled to view this video.
  </div>      
  <script type="text/javascript">
    var params = { allowScriptAccess: "always" };
    var atts = { id: "myytplayer" };
    swfobject.embedSWF("http://www.youtube.com/v/y5whWXxGHUA?enablejsapi=1&playerapiid=ytplayer&version=3",
    "ytapiplayer", "425", "356", "8", null, null, params, atts);
  </script>
</div> 

После этого вы можете вызвать следующие функции:

ytplayer = document.getElementById("myytplayer");
ytplayer.playVideo();
ytplayer.pauseVideo();
ytplayer.stopVideo();

Ответ 14

если у вас есть свойство autoplay в iframe src, это не поможет перезагрузить 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'));

Ответ 15

если вы иногда используете playerID.stopVideo(); не работает, вот трюк,

 function stopVideo() {
           playerID.seekTo(0);
    playerID.stopVideo();
}

Ответ 16

Просто так.

включить следующую строку в функцию, чтобы закрыть pop.

$('#youriframeid').remove();