使用 Youtube API 找到刚刚播放完的 Youtube iframe 的父 div

Posted

技术标签:

【中文标题】使用 Youtube API 找到刚刚播放完的 Youtube iframe 的父 div【英文标题】:Find the parent div of the Youtube iframe that just finished playing using Youtube API 【发布时间】:2011-12-17 17:03:09 【问题描述】:

我有这个功能:

function onPlayerStateChange(event) 
    if (event.data == 0)

        alert(event.target.parentNode);

    
);

每次嵌入 iframe 发生“状态更改”时都会调用它。它只会在视频结束时发出警报消息,according to the docs,我可以通过调用event.target 来获取对播放器的引用但是,我希望能够找到event.target 的父 div,但我无法在其上调用任何 jquery 或常规 javascript。我怎样才能找到刚刚结束的播放器的父 div?

【问题讨论】:

【参考方案1】:

event.target 不是解决此问题的可靠方法。正如 Molle 博士警告的那样,event.target 键确实会定期更改...

有一个getIframe() 函数可以让您更可靠地工作,因此event.target.getIframe().parentNode 将为您提供父DIV。

【讨论】:

这确实应该是公认的答案,因为它完全符合原始问题的要求,并且以安全的方式进行。 这正是我的情况:iframe 我可以使用 event.target.a 获得 iframe,几个月后使用 event.target.f 等等...... getIframe() 是正确的回答 target.b 在 2021 年不再有效,但 event.target.getIframe() 仍然有效。 player.getIframe() in official API doc【参考方案2】:

event.target 这里不返回 html 元素(在这种情况下为 iframe),它返回播放器对象。您可以使用 event.target.b 访问 iframe(以及使用 event.target.b.parentNode 访问 div)。

请注意:这不是文档的一部分,我正在使用控制台检查 event.target 的成员。这种情况(通过 event.target.b 的访问)将来可能会发生变化。

【讨论】:

反之,你将如何从 iframe HTML 元素转到播放器对象? 没关系。我所做的是当我从播放器对象获取 iframe 时,我将 iframe 的 id 作为键存储,将播放器对象存储为全局关联数组中的值。因此,我总是可以调用数组从 iframe 中拉出播放器。 event.target 在我的情况下不会产生玩家。播放器会将“loadVideoById”作为功能之一。请帮助我***.com/questions/20794974/…

以上是关于使用 Youtube API 找到刚刚播放完的 Youtube iframe 的父 div的主要内容,如果未能解决你的问题,请参考以下文章

YouTube API v3 响应缺少视频

无法使用 YouTube Android Player API 播放某些 Youtube 视频

如何使用 Youtube Javascript API 获取 youtube 用户的观看历史记录?

使用 Android Youtube API 播放直播流

通过 Youtube API (python) 检索 Youtube 播放列表信息

使用 YouTube API 播放带有开始和结束时间的 YouTube 视频