YouTube JavaScript API-播放器隐藏时未启动播放
我通过YT API控制YouTube iFrame播放器。它在正常情况下运行良好,但在我的过程中,有一个状态必须显示播放器:无;在我用display:block再次显示播放器之后;它工作正常,只是没有触发通常的事件 测试用例:YouTube JavaScript API-播放器隐藏时未启动播放,javascript,youtube,Javascript,Youtube,我通过YT API控制YouTube iFrame播放器。它在正常情况下运行良好,但在我的过程中,有一个状态必须显示播放器:无;在我用display:block再次显示播放器之后;它工作正常,只是没有触发通常的事件 测试用例: 使用播放器上的“正常播放”按钮启动视频-播放 启动事件将被激发 按下面的按钮停止视频,它 将生成一个.stopVideo();并隐藏YouTube的父元素 iframe 单击show按钮,将其设置为 显示:块;再次 使用播放控件再次启动视频,YouTube播放器将不再有
这似乎是基于Flash的YouTube API的一个已知问题。您应该使用可见性:隐藏,而不是显示:无。
<div>
<div id="test" style="width: 300px; height: 200px;"></div>
</div>
<button id="stop">Stop</button>
<button id="show">Show</button>
<br />
<textarea id="console" style="height: 500px;"></textarea>
var vars = {
enablejsapi: 1,
origin: window.location.protocol + "//" + window.location.host,
autoplay: 0,
theme: 'dark',
modestbranding: 1,
wmode: "opaque",
rel: 0,
vq: 'default'
};
var c = $('#console');
var tag = document.createElement("script");
tag.src = "//www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName("script")[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
window.onYouTubeIframeAPIReady = function () {
var player = $("#test"),
playercontainer = player.parent();
playerobj = new YT.Player(player.attr("id"), {
videoId: '0_aFSNB8E5Y',
wmode: 'opaque',
playerVars: vars,
events: {
onStateChange: function (state) {
switch (state.data) {
case YT.PlayerState.PLAYING:
c.val("play started\n" + c.val());
break;
//case YT.PlayerState.PAUSED:
case YT.PlayerState.ENDED:
c.val("play ended\n" + c.val());
break;
}
}
}
});
$('#stop').click(function () {
playerobj.stopVideo();
playercontainer.css('display', 'none');
});
$('#show').click(function () {
playercontainer.css('display', 'block');
playerobj.addEventListener('onStateChange', 'test');
});
}