我正在创建一个网站,用户可以在该网站上观看视频并回答问题。然而,我有一个问题。当用户在iPhone上观看YouTube嵌入的视频时,它会在iOS播放器中启动,而不是在YouTube播放器中。当我试图将播放器从全屏中取出时,它并没有这样做,而是暂停视频并坐在那里。我使用的是这个代码:
if (
document.fullscreenElement ||
document.webkitFullscreenElement ||
document.mozFullScreenElement ||
document.msFullscreenElement
) {
// exit full-screen
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
}
这适用于除iOS iPhone播放器之外的所有设备。我也试过把球员藏起来,但也没用。有没有办法让玩家退出全屏,或者某种变通方法?非常感谢。
注:我正在使用Youtube iframe API。https://developers.google.com/youtube/iframe_api_reference?hl=en
我使用以下代码作为解决方法:
当你想退出iPhone播放器时:
player.seekTo(2000, true);
这将使播放器转到视频的末尾并关闭全屏播放器。
在Iphone上,视频在苹果自己的视频播放器中播放。这个玩家不像YouTubes玩家那样是一个html5元素。因此,在Iphone上没有全屏元素。
例如,Ipad上的情况并非如此,YouTubes自己的玩家会加入,从而启用全屏模式。
简言之:我确信你做不到。(令人高兴地证明是错误的)
这是不可能的。要么你让它切换到YouTube应用程序,要么你在应用程序内部使用iOS默认播放器。
如果您仍在移动浏览器中,您可以尝试以下操作:
在youtube api中,有一个
YouTube.PlayerState.ENDED
事件。当用户点击退出全屏模式时,会触发此事件。只需在当前html页面中添加代码,迫使浏览器关闭播放器以关闭全屏,它就会再次显示原始播放器。
有一个问题,在Playerstate.ENDED事件之后,视频将无法继续播放。但你可以随时重新定位视频停止的时间,然后再次播放。
function takePlayerOutFullscreen(event) {
if (event.data == YT.PlayerState.ENDED) {
alert("video ended");
}
else if (event.data == YT.PlayerState.PAUSED) {
alert("video paused");
}
}
(注意:如果在播放视频时,您的移动浏览器会将您直接带到本机youtube应用程序,则您无法切换/关闭本机youttube应用程序并返回web浏览器。为了防止移动浏览器将您直接引导到本机应用程序。您可以转到手机设置并更改默认启动应用程序。)
希望能有所帮助。