当前位置: 首页 > 面试题库 >

YouTube iframe播放器API-OnStateChange不触发

谢雅珺
2023-03-14
问题内容

如前所述,它只是YouTube开发者页面上添加的代码的精确副本

alert('State Changed')

作为onPlayerStateChange函数中要触发的第一件事。

但是,什么都没有发生……无论我如何看待它以及所做的更改,我都无法让onStateChange做任何事情。

我该如何解决这个问题?


问题答案:

作为临时解决方案,您只需要在onReady事件中添加事件侦听器:

function onReady() {
    player.addEventListener('onStateChange', function(e) {
        console.log('State is:', e.data);
    });
}

确保从YT.PLAYER构造函数中删除onStateChange事件(请参阅jsfiddle)。

另外,正如Google代码发布线程中提到的那样,您可以设置时间间隔并轮询播放器的当前状态,而不是监听onStateChange事件。这是执行此操作的示例代码片段:

setInterval( function() {
  var state = player.getPlayerState();
  if ( playerState !== state ) {
    onPlayerStateChange( {
      data: state
    });
  }
}, 10);

Firefox和IE问题

其他人已经提到,如果Firefox放置在具有css属性的容器中,则Firefox不会实例化YouTube播放器display: noneInternet Explorer也将无法使用visibility: hidden。如果您发现这是问题所在,请尝试使用将该容器放置在页面之外left: -150%

编辑:我对这个答案进行了更彻底的编辑,因为在2013年修复了原始错误之后,人们仍然看到此错误。



 类似资料:
  • 我正在开发一个包含一些音频播放器的RecyclerView的应用程序。应用程序将下载。3gp文件(如果尚未下载)。 当我单击playAudio按钮时,音频未被播放。 这是我的适配器代码: 我怎样才能解决这个问题?

  • 我制作了一个没有材质渲染器的触发器,当我玩游戏并引导我的玩家进入它时,我的玩家无法移动,Unity说“角色控制器移动调用非活动控制器”“使用Unity引擎; public类player move:MonoBehaviour {[serialize field]private move settings _ settings = null; }` 我也是新的,所以请帮忙!

  • 由于小程序里只能使用小程序提供的video组件,所以Mudu.Room.Player仅提供了对用户播放时长的统计功能。 只需要在小程序的事件处理中执行相应函数即可。 video组件bindplay时调用 Mudu.Room.Player.OnPlay() video组件bindpause时调用 Mudu.Room.Player.OnPause() video组件bindended时调用 Mud

  • Mudu.Player 播放器组件(muduPlayer 新版) 升级提示 在 初始化播放器 和使用 player.load() 方法时新增isLive参数(默认为false) 该参数用于控制播放器的ui展示,当为false时 显示进度条 和 时间进度 ;当为true时 隐藏进度信息 并 显示为直播状态 初始化播放器 var isChannelLiving = !!Mudu.Room.GetLiv

  • 有没有办法通过Spotify Web API将歌曲排入用户在其活动设备上的队列? 我不想播放网页上的歌曲。我想通过一个网页/服务器应用程序,使用用户凭据调用Spotify web API,向他们的队列添加一个曲目,该曲目将在他们的活动Spotify设备上播放。

  • 我正在开发一个音频播放器,它可以在后台播放音频文件。我的问题是,当录像机或视频播放器启动时,我需要暂停音频播放器。 有什么方法可以处理这个任务吗?例如,我有来处理这些调用。当我接到呼叫或wnat呼叫时,我们可以使用呼叫状态暂停播放器。我想为录像机或视频播放器以及相同的场景。当视频/录制开始时,我需要暂停音频播放器。