钩住嵌入式 youtube 播放器内的单击事件

Posted

技术标签:

【中文标题】钩住嵌入式 youtube 播放器内的单击事件【英文标题】:hook to click event inside embedded youtube player 【发布时间】:2012-02-29 10:24:55 【问题描述】:

每当有人单击嵌入的 youtube 视频上的“播放”按钮时,我想运行一个名为 stopSlide 的函数。甚至当他们点击嵌入视频中的 anywhere 时运行该功能现在对我来说都可以正常工作。

我该怎么做?

【问题讨论】:

【参考方案1】:

有一个提供事件回调的 YouTube javascript API。

不幸的是,没有办法直接检测点击事件(至少我不知道有任何方法)。但是,您可以使用onStateChange 检测播放器状态的变化。

首先,您需要通过使用特殊 URL 嵌入播放器中启用 JS API:

http://www.youtube.com/v/VIDEO_ID?version=3&enablejsapi=1

然后你需要创建一个事件处理函数:

function player_state_changed(state) 
  /* This event is fired whenever the player's state changes.
     Possible values are:
     - unstarted (-1)
     - ended (0)
     - playing (1)
     - paused (2) 
     - buffering (3)
     - video cued (5). 
     When the SWF is first loaded it will broadcast an unstarted (-1) event.
     When the video is cued and ready to play it will broadcast a video cued event (5).
  */

  if (state == 1 || state == 2) 
    alert('the "play" button *might* have been clicked');
  


最后,您需要确保在电影状态发生变化时调用处理程序:

document.getElementById('MY-PLAYER-ID').addEventListener('onStateChange', 'player_state_changed');

【讨论】:

因为我是个菜鸟:我会在我的 js 文件(或 html)中放入什么代码来利用该事件? 我已经扩展了我的答案,希望它现在会更有帮助。 这里的“MY-PLAYER-ID”是什么意思? @Serge: 你的玩家元素的 ID 这个问答已经很老了。这些天可能有一个新的 API。【参考方案2】:

您只需在播放器上注册一个事件侦听器即可调用您的stopSlide 函数。以下代码行应该为您完成(首先您必须将两个“strings”替换为适当的值 - 嵌入式播放器的 ID,以及您想要的函数的名称调用。例如:“stopSlide”):

document.getElementById("_idOfEmbeddedPlayerElement_").addEventListener("onStateChange", "_nameOfFunctionToCall_");`

【讨论】:

这会触发每个事件的回调函数,例如cue、buffer、play、pause、stop、end。 我们究竟应该搜索什么“嵌入式播放器的 ID”? youtube 视频的 【参考方案3】:

可能会有所帮助...根据您的要求进行编辑 http://jsfiddle.net/masiha/4mEDR/

【讨论】:

伟大的小提琴。 Masiha 没有提到的非常关键的细节...new YT.Player('player', ... 行中的字符串 'player' 是对嵌入 YouTube 视频的 iFrame 的 ID 的引用。 这是一个非常简洁的例子 - 喜欢它。感谢分享链接:) 它不会提醒我。为什么?【参考方案4】:

我尝试使用上述建议,但没有成功。 它无法处理计时器滑块。 请参阅自动滑块的 Google 示例,他们为视频使用了弹出窗口。 google slider with embedded video

【讨论】:

欢迎来到 ***!如果我做对了,这个视频有帮助吗?如果是这样,您能否在此处添加该信息的摘录?这样,如果链接失效,您的答案仍然有用。 你能使用那些建议无效的人的名字吗?不幸的是,在这个网站上,人们可以用许多不同的方式对答案进行排序,因此“上面”没有任何意义。【参考方案5】:

据我所知,您无法检测到 iframe 内的点击,或者您无法在 iframe 内触发任何点击事件 我的解决方案是在 Iframe 中放置一个按钮,将其属性设置为该按钮内的透明(不透明度),您可以使用 playmethod 和 pause 方法调用您的点击功能,您可以启用自动播放

【讨论】:

以上是关于钩住嵌入式 youtube 播放器内的单击事件的主要内容,如果未能解决你的问题,请参考以下文章

单击图像时开始/播放嵌入式(iframe)youtube-video

我如何对 youtube 嵌入播放器进行编程以在单击时取消静音

单击 mp4 视频开始/播放嵌入式 (iframe) youtube 视频

在 Android 上单击“播放”按钮时,YouTube 嵌入式视频会显示开发人员选项

如何跟踪嵌入视频(youtube、vimeo 等)的点击事件? (跟踪播放次数)

嵌入带有侧列表托盘的 youtube 播放列表