如果使用 YouTube iframe 播放器时视频不可用,则通过 javascript 检测
Detect via javascript if video is unavailable when using YouTube iframe player
我正在使用 YouTube iFrame API 在我的网站上嵌入 YouTube 视频。这些视频是从通过 API 获得的 Reddit 数据中提取的,因此内容会动态变化。其中一些视频加载为“视频不可用”。
我的目标是检测何时发生这种情况,并删除不可用的视频。但是,我还没有找到检测这种状态的方法。
到目前为止我尝试过的:
- 在 iframe 内容中查找具有 class ytp 错误的项目。这不起作用,因为所有现代浏览器都会阻止 javascript 查看 iframe 内容。
- 为播放器添加一个 onError 事件侦听器。这行不通,因为视频不可用在玩家眼中显然不构成错误。
我假设有一些调用可以用来在播放器中检测到这一点,但我还没有找到调用。如何检测到这一点?
幸运的是,它不需要再次调用 YT API。在 YouTube iFrame 的 onReady 处理程序中,getPlayerState() 将为“不可用”视频 return -1(未启动),而所有其他视频 return 状态为 5(视频已提示)。我现在可以简单地从 DOM 中删除所有具有此 -1 状态的视频。
我正在使用 YouTube iFrame API 在我的网站上嵌入 YouTube 视频。这些视频是从通过 API 获得的 Reddit 数据中提取的,因此内容会动态变化。其中一些视频加载为“视频不可用”。
我的目标是检测何时发生这种情况,并删除不可用的视频。但是,我还没有找到检测这种状态的方法。
到目前为止我尝试过的:
- 在 iframe 内容中查找具有 class ytp 错误的项目。这不起作用,因为所有现代浏览器都会阻止 javascript 查看 iframe 内容。
- 为播放器添加一个 onError 事件侦听器。这行不通,因为视频不可用在玩家眼中显然不构成错误。
我假设有一些调用可以用来在播放器中检测到这一点,但我还没有找到调用。如何检测到这一点?
幸运的是,它不需要再次调用 YT API。在 YouTube iFrame 的 onReady 处理程序中,getPlayerState() 将为“不可用”视频 return -1(未启动),而所有其他视频 return 状态为 5(视频已提示)。我现在可以简单地从 DOM 中删除所有具有此 -1 状态的视频。