На YouTube API-интерфейса JavaScript - отключить похожие видео


правильно, это, кажется, плохо документировано или я не вижу его в документации. Я в основном не хочу никаких связанных видео (?rel=0) С помощью JavaScript API.

$players[$vidIdPlaceholderRef] = new YT.Player('player_' + $vidIdPlaceholderRef, {
    height: '550',
    width: '840',
    videoId: $vidId
});

это то, что у меня на месте.

Я тоже пробовал:

$players[$vidIdPlaceholderRef] = new YT.Player('player_' + $vidIdPlaceholderRef, {
    height: '550',
    width: '840',
    videoId: $vidId + '?rel=0',
    rel : 0
});

не повезло. Кто-нибудь знает вариант, который может быть добавлен (пробовал rel : 0 не повезло )

6 57

6 ответов:

" rel " - это параметр игрока, как указано здесь:

https://developers.google.com/youtube/player_parameters#rel

чтобы добавить параметры игрока в iframe players, необходимо указать свойство playerVars второго аргумента конструктора (на момент написания статьи это задокументировано здесь, и на страница документации iframe API)

например

new YT.Player('playerid', {
    height: '550',
    width: '840',
    videoID: 'video_id',
    playerVars: {rel: 0},
});

принятое решение не работает для меня. Что действительно работает:

1) Поместите iframe в html, который включает параметр rel

<iframe id="youtube-video" width="560" height="315" 
 src="https://www.youtube.com/embed/M7lc1UVf-VE?enablejsapi=1&rel=0&modestbranding=1" 
 frameborder="0" enablejsapi="1" allowfullscreen></iframe>

2) использование JavaScript API для присоединения к этому существующему игроку

var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

var player;
function onYouTubeIframeAPIReady() {
  player = new YT.Player('youtube-video', {
    events: {
      'onReady': onPlayerReady,
      'onStateChange': onPlayerStateChange
    }
  });
}

function onPlayerReady(event) {
    console.log("ready");
}

function onPlayerStateChange(event) {
    console.log("state changed");
}

демо-скрипка: http://jsfiddle.net/bf7zQ/195/

Если вы используете SWFObject, вам просто нужно сделать что-то вроде этого:

function loadVideo() {
        var params = { allowScriptAccess: "always" }
            , atts = { id: "myvideo" }
        ;
//NOTE THE END OF THE BELOW LINE vvvvvv
        swfobject.embedSWF("https://www.youtube.com/v/[video id here]?enablejsapi=1&playerapiid=myvideo&version=3&rel=0"
         , "videoplaceholderid"
         , "768", "432", "8", null, null, params, atts);
    }

просто добавить rel=0 до конца вашего url.

нет необходимости кодировать через API, теперь его легко можно сделать с помощью

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

вот быстрое решение:

setInterval(function(){
    if($('iframe').length > 0){
        $('iframe').each(function(){
            if($(this).hasClass('gotYou')){
                //do nothing
            }else{
                var getMySrc = $(this).attr('src');
                var newSrc = getMySrc.split('?');
                console.log(newSrc);
                var freshURL = newSrc[0]+'?rel=0&'+newSrc[1];
                console.log(freshURL);
                $(this).addClass('gotYou');
                $(this).attr('src', freshURL );         
            }
        });
    }
}, 1);

что он делает, он ищет iframe в вашем документе. Если он находит iframe, оно захватывает в src элемента iframe, находит ? отметить и затем заменить ? by ?rel=0& . Здесь цель состоит в том, чтобы rel=0

new YT.Player('playerid', {
    height: '550',
    width: '840',
    videoID: 'video_id',
    playerVars: {rel: 0},
});