作为临时解决方案,您只需要在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放置在具有css属性的容器中,则Firefox不会实例化YouTube播放器display: none
。Internet Explorer也将无法使用visibility: hidden
。如果您发现这是问题所在,请尝试使用将该容器放置在页面之外left: -150%
。