使用 YouTube iframe 播放器时通过 javascript 检测视频是否不可用

Hay*_*ech 5 javascript youtube youtube-api

我正在使用 YouTube iFrame API 在我的网站上嵌入 YouTube 视频。这些视频是从通过其 API 获得的 Reddit 数据中提取的,因此内容会动态变化。其中一些视频加载为“视频不可用”。

我的目标是检测何时发生这种情况,并删除不可用的视频。但是,我还没有找到检测这种状态的方法。

到目前为止我尝试过的:

  1. 在 iframe 内容中查找具有 ytp-error 类的项目。这不起作用,因为所有现代浏览器都会阻止 javascript 查看 iframe 内容。
  2. 向播放器添加 onError 事件侦听器。这不起作用,因为在玩家看来,视频不可用显然并不构成错误。

我假设有一些调用可以用来在播放器中检测到这一点,但我还没有找到诸如调用之类的调用。如何检测到这一点?

Hay*_*ech 5

值得庆幸的是,它不需要再次调用 YT API。在 YouTube iFrame 的 onReady 处理程序中,getPlayerState() 将为“不可用”视频返回 -1(未启动),而所有其他视频返回状态 5(视频提示)。我现在可以简单地从 DOM 中删除具有 -1 状态的所有视频。