YouTube Iframe API onError 事件近几个月没有触发

Way*_* Fu 8 javascript youtube-iframe-api

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

\n

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

\n
<iframe id="existing-iframe-example"\n        width="640" height="360"\n        src="https://www.youtube.com/embed/M7lc1UVf-VE?enablejsapi=1"\n        frameborder="0"\n        style="border: solid 4px #37474F"\n></iframe>\n\n<script type="text/javascript">\n  var tag = document.createElement(\'script\');\n  tag.id = \'iframe-demo\';\n  tag.src = \'https://www.youtube.com/iframe_api\';\n  var firstScriptTag = document.getElementsByTagName(\'script\')[0];\n  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n\n  var player;\n  function onYouTubeIframeAPIReady() {\n    player = new YT.Player(\'existing-iframe-example\', {\n        events: {\n          \'onReady\': onPlayerReady,\n          \'onStateChange\': onPlayerStateChange,\n          \'onError\': onError\n        }\n    });\n  }\n  function onError(event) {\n    console.log(event.data)\n  }\n  \n  function onPlayerReady(event) {\n    \n  }\n\n  function onPlayerStateChange(event) {\n    console.log(event.data);\n  }\n</script>\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

根据官方页面指南:https://developers.google.com/youtube/players/support \xe2\x86\x92“Google工程师使用youtube-iframe-api标签监控并回答问题”,希望Google工程师能够看到这个发布并修复“onError”问题。

\n

Ned*_*Ned 4

我找到了解决这个问题的方法。我发现,至少在我的情况下,onError回调不会在初始加载时触发(当最需要的时候!),但会在播放器的其余部分完全加载后触发。

如果您绝对需要该onError事件正常工作,您可以在已加载的播放器中重新加载视频。autoplay从对象中删除参数playerParams——这会导致黑客失败。添加loadByVideoId(用于自动播放)或cueByVideoId使用相同的视频 ID 到onReady回调。

这将重新加载当前视频,并onError在需要时触发回调。autoplay否则,除了视频在播放前短暂提示(如预期)之外,几乎不会有任何明显的效果。

如果您想了解更多信息,请告诉我 - 希望有帮助!

编辑:


更新:我不知道它是什么时候发生的——谷歌的开发人员从未更新过我的问题——但看起来这个错误可能已经解决了。第一个演示现在按预期列出了加载时的错误代码。对于实施此解决方法的任何人,您现在也许可以删除该黑客攻击。

  • 内德,感谢你的努力,对此表示敬意。我已经测试过了,你是对的,onError只会在“重新加载”时触发,而不是第一次,这非常烦人。强制加载视频两次并不是一个令人愉快的方法,但这似乎是目前唯一的方法。希望谷歌有一天能修复它。 (2认同)