【问题标题】:Detect event source in YouTube API在 YouTube API 中检测事件源
【发布时间】:2013-12-03 05:39:12
【问题描述】:

我在使用 YouTube IFrame API 创建的网页上有一个 youtube 播放器
当我收到onStateChange 事件时,就像在代码示例中一样:

var player;
  function onYouTubeIframeAPIReady() {
    player = new YT.Player('player', {
      height: '390',
      width: '640',
      videoId: 'M7lc1UVf-VE',
      events: {
        'onReady': onPlayerReady,
        'onStateChange': onPlayerStateChange
      }
    });

onPlayerStateChange 被调用时,我希望能够区分

  1. 用户点击播放器 UI 并更改了状态(播放、暂停等)
  2. 已进行 API 调用以更改状态(player.playVideo()player.pauseVideo() 等)

目前两者都导致完全相同的事件。

【问题讨论】:

  • 也许事件对象中有一些变量可以帮助区分调用者。我环顾四周,但什么都没有。

标签: javascript youtube youtube-api


【解决方案1】:
  1. 我想你会遇到跨域 iframe 问题。

  2. 正如我在评论中提到的,传递给事件侦听器的事件对象中可能有一些有用的信息。我浏览了至少两个级别,发现用户点击操作和 API 调用之间没有区别。但是,对象中有很多信息,并且可能有助于区分这两个动作。

  3. 如果您的代码正在进行 API 调用,也许您可​​以通过其他方式进行跟踪。然后您的代码可以判断是否进行了 API 调用。也许存储当前呼叫和时间戳——类似的东西。

  4. 最后,也许还有另一种方法可以捕获您所追求的信息。您的问题并没有真正指定最终目标。我建议探索替代方案,因为似乎不可能实现简单的解决方案。

【讨论】:

  • 我认为你的结论是正确的。比较事件对象,到目前为止我还没有发现任何区别。但可能还有一个。我的代码正在进行 API 调用,但可能同时发生用户事件。所以我看不到如何“标记”API(到目前为止)。我试图避免的解决方案是隐藏 Youtube 默认播放/暂停按钮并提供我自己的。然后我可以知道何时播放/暂停源自 UI
猜你喜欢
  • 2012-09-22
  • 2012-06-13
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
  • 2013-01-30
  • 2020-10-20
  • 2020-06-08
相关资源
最近更新 更多