【问题标题】:YouTube Iframe API onError event does not fire in recent monthsYouTube Iframe API onError 事件在最近几个月没有触发
【发布时间】:2021-09-15 21:13:43
【问题描述】:

我很确定 YouTube Iframe API“onError”事件会在过去触发,因为我运行了一个基于此 API 的项目。但是最近“onError”事件不会触发,即使是最简单的错误。

这是一个基于官方页面(https://developers.google.com/youtube/iframe_api_reference)的简单示例代码,是可行的:

<iframe id="existing-iframe-example"
        width="640" height="360"
        src="https://www.youtube.com/embed/M7lc1UVf-VE?enablejsapi=1"
        frameborder="0"
        style="border: solid 4px #37474F"
></iframe>

<script type="text/javascript">
  var tag = document.createElement('script');
  tag.id = 'iframe-demo';
  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('existing-iframe-example', {
        events: {
          'onReady': onPlayerReady,
          'onStateChange': onPlayerStateChange,
          'onError': onError
        }
    });
  }
  function onError(event) {
    console.log(event.data)
  }
  
  function onPlayerReady(event) {
    
  }

  function onPlayerStateChange(event) {
    console.log(event.data);
  }
</script>

一旦将视频ID字符串“M7lc1UVf-VE”更改为错误的,例如“M7lc1UVf”,它应该触发“onError”事件,但现在不会。

根据官方页面指南:https://developers.google.com/youtube/players/support→“谷歌工程师使用youtube-iframe-api标签监控和回答问题”,希望谷歌工程师能看到这个帖子并修复“onError”问题。

【问题讨论】:

  • 我在使用无效 ID 时也看到了这一点。 onReady 运行得很好,但是在用户点击播放之前我无法确定视频是否真的准备好了——这对我的用例来说太晚了。

标签: javascript youtube-iframe-api


【解决方案1】:

您需要从服务器(非本地)加载页面。只需将其更改为不在本地加载即可。

我遇到了同样的问题,并意识到如果我在本地加载页面,大多数错误事件都不会引发。如果我从我的天蓝色服务器加载页面,则错误是正确的。 此外,如果 html 是本地加载的,某些视频将根本无法工作/加载。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-01-03
  • 2012-10-10
  • 2011-12-07
  • 2015-01-28
  • 2012-11-18
  • 2015-10-30
  • 2013-02-20
  • 2014-07-25
相关资源
最近更新 更多