youtube iframe api参数rel = 0不起作用

Vik*_*tor 8 youtube-iframe-api

我需要在观看视频后隐藏相关视频.我订了rel=0,但它不起作用.我正在使用此页面进行测试.rel观看视频后,复选框值不会影响显示的相关视频.

它在谷歌浏览器中不起作用.在Mozilla Firefox中,它可以正常工作.

Iri*_*ina 10

截至2018年9月25日,您无法禁用相关视频.相反,如果rel参数设置为0,则相关视频将来自与刚刚播放的视频相同的频道. YouTube API

  • 抱歉@IrinaKovalchuk,我的 Chrome 浏览器采用了我的意大利语区域设置并自动向我显示未更新的意大利语页面...强制浏览器使用英语(chrome://settings/languages),我可以看到更新的文档和句子“注意:此参数已弃用,在 2018 年 9 月 25 日之后将被忽略。” 出现了。 (2认同)

Max*_*ter 7

自 2018 年 9 月起,YouTube更改了该rel=0参数,以便不再完全禁用相关视频。

但是,您可以使用 YouTube Player API 来解决此问题,以显示自定义 HTML 而不是相关视频

下面是一些示例代码,它会在视频完成后在视频上显示一个自定义“重播”按钮,隐藏相关视频:

<style>
    #playerWrap {
        display: inline-block;
        position: relative;
    }
    #playerWrap.shown::after {
        content:"";
        position: absolute;
        top: 0;
        left: 0;
        bottom: 0;
        right: 0;
        cursor: pointer;
        background-color: black;
        background-repeat: no-repeat;
        background-position: center; 
        background-size: 64px 64px;
        background-image: url(data:image/svg+xml;utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiB2aWV3Qm94PSIwIDAgNTEwIDUxMCI+PHBhdGggZD0iTTI1NSAxMDJWMEwxMjcuNSAxMjcuNSAyNTUgMjU1VjE1M2M4NC4xNSAwIDE1MyA2OC44NSAxNTMgMTUzcy02OC44NSAxNTMtMTUzIDE1My0xNTMtNjguODUtMTUzLTE1M0g1MWMwIDExMi4yIDkxLjggMjA0IDIwNCAyMDRzMjA0LTkxLjggMjA0LTIwNC05MS44LTIwNC0yMDQtMjA0eiIgZmlsbD0iI0ZGRiIvPjwvc3ZnPg==);
    }
</style>
<div>
    <div id="playerWrap">
        <iframe
            width="640" height="360"
            src="https://www.youtube.com/embed/0sDg2h3M1RE?enablejsapi=1"
            frameborder="0"
        ></iframe>
    </div>
</div>
<script>
  var playerFrame = document.currentScript.previousElementSibling.children[0].children[0];

  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(playerFrame, {
      videoId: 'M7lc1UVf-VE',
      events: {
        'onStateChange': onPlayerStateChange
      }
    });
  }

  function onPlayerStateChange(event) {
    if (event.data == YT.PlayerState.ENDED) {
        document.getElementById("playerWrap").classList.add("shown");
    }
  }

  document.getElementById("playerWrap").addEventListener("click", function() {
    player.seekTo(0);
    document.getElementById("playerWrap").classList.remove("shown");
  });
</script>
Run Code Online (Sandbox Code Playgroud)

有关缩小的代码以及进一步的描述、详细信息和说明,请查看我关于该主题的博客文章


Chr*_*ris 5

这是因为您很可能登录的是 Chrome 浏览器,而不是 Firefox 浏览器。

&rel=0仅在未登录时有效。但是,您可以使用增强隐私模式来解决此问题:

https://www.youtube-nocookie.com/embed/[id]?rel=0


ild*_*lue -3

用 Chrome 和 Opera 都检查过了,它有效。

https://jsfiddle.net/o8ztczn6/

<iframe width="560" height="315" src="https://www.youtube.com/embed/6UVZpQ8cLSQ?rel=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)

完成后没有显示相关视频。

  • 我注意到当我登录 YouTube 帐户时会显示相关视频。因此,当我登录时,rel=0 不适用于 google chrome 和 mozilla firefox。如果我退出,则完成时不会显示相关视频。那么另一个问题。我如何为登录用户隐藏相关视频。 (2认同)