检测YouTube API中的事件来源

Ron*_*lev 7 javascript youtube youtube-api

我在使用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
      }
    });
Run Code Online (Sandbox Code Playgroud)

onPlayerStateChange被叫的时候,我希望能够区分

  1. 用户点击播放器UI并更改状态(播放,暂停等)
  2. API调用来改变状态的情况下(player.playVideo(),player.pauseVideo()等等)

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

JSu*_*uar 2

  1. 我认为你会遇到跨域 iframe 问题。

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

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

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