某些视频似乎存在限制,不允许嵌入尺寸小于 200*200 (px) 的视频。此限制不适用于所有视频(可能比上次更新的 youtube API 更早,我不知道)。
经过一些测试,当 youtube player readystate 更改为 status 时,会应用此限制:PlayerState.PLAYING (evt.data === 1)
因此,作为一种基本的解决方法,您可以在状态更新后“即时”更改 iframe 的大小,请参见下面的演示和代码:
演示
var player,
myWidth = "114px",
myHeight = "65px";
function onYouTubePlayerAPIReady() {
player = new YT.Player('testVideo', {
height: myWidth,
width: myHeight,
videoId: '-rMTExNTx2s',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
},
playerVars: {
controls:0,
showinfo:0
}
});
}
function onPlayerStateChange(evt) {
if (evt.data == -1) {
evt.target.a.width = "200px";
evt.target.a.height = "200px";
}
else if (evt.data == 1) {
evt.target.a.className = "";
evt.target.a.width = myWidth;
evt.target.a.height = myHeight;
done = true;
}
}
正如你在这个 DEMO 中看到的,我用 css 设置了一个隐藏类.hidden{opacity:0}
。这用于在加载视频之前隐藏播放器。使用display:none;
不起作用,它肯定是另一个 API 限制。仍然在这个 DEMO 中,您必须等到视频开始播放才能看到播放器出现。您现在必须找到可以满足您需求的最佳解决方法,例如使用缩略图图像并在就绪状态发生变化时从负偏移播放器移动到希望的位置,希望您明白这一点。