为了账号安全,请及时绑定邮箱和手机立即绑定

YouTube JavaScript API, on状态更改未触发,无自动播放

YouTube JavaScript API, on状态更改未触发,无自动播放

泛舟湖上清波郎朗 2022-09-11 20:31:40
我有一个训练计划,我尝试在 iFrame 中显示 YouTube 视频,自动播放它,并在视频完成后前进到下一页。我可以让YouTube上IPFI就绪函数触发,但其他事件都不会。实际上,我只对状态变化感兴趣。    var tag = document.createElement('script');    tag.src = 'https://www.youtube.com/iframe_api';    tag.id = 'apiScript';    var firstScriptTag = document.getElementsByTagName('script')[0];    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);...    //function onYouTubeIframeAPIReady() {  //tried this too but no change    window.onYouTubeIframeAPIReady = function() {        player = new YT.Player('externalComponent', {        events: {            'onReady': onPlayerReady,            'onError': onPlayerError,            'onStateChange': onPlayerStateChange            }        });        console.log('api ready');    }    function onPlayerStateChange(event) {        console.log('onStateChange');        console.log(YT.PlayerState);    }当它运行时,您可以在控制台中看到“api就绪”,但没有其他内容。内联框架如下所示:    <iframe id="externalComponent" src="https://youtube.com/embed/_S_Bg9qfa8o?enablejsapi=1&controls=0&autoplay=1" width="1024" height="576" allow="autoplay" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>是什么阻止了 onState更改了工作状态,而不是自动播放?控件不显示。
查看完整描述

1 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

我无法让它像我发布的那样工作。我不得不更改代码以使用div而不是iframe,在播放器Vars中添加视频ID和其他参数。完成此操作后,视频会自动播放,不显示任何控件,并触发状态更改事件。


  function onYouTubeIframeAPIReady() {

    player = new YT.Player('player', {

      playerVars: {

                autoplay: 1,

                controls: 0,

                showinfo: 0,

                autohide: 1

                },

      videoId: '_S_Bg9qfa8o',

      events: {

        'onReady': onPlayerReady,

        'onStateChange': onPlayerStateChange

      }

    });

  }

...


<div id="player"></div>


查看完整回答
反对 回复 2022-09-11
  • 1 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信