我正在使用的解决方案是这样的:
var video = document.createElement( 'video' );
...
video.addEventListener( 'playing', function () {
// Note: we are adding event listener for 'playing' event, not for 'play' event!
if ( video.webkitDisplayingFullscreen ) {
console.log( 'Inline playback is not supported' );
} else {
console.log( 'Inline playback is supported' );
}
}, false );
现在这种方法显然存在一个问题:直到视频开始播放后,您才知道是否支持内联。此外,如果用户暂停视频,该事件可能会触发多次(这不是问题,但您必须小心)。
我已经在 iPod touch、iPhone、iPad、Nexus 5 和 Htc One X 上对此进行了测试。它在所有这些设备上都提供了正确的结果。
我不知道它是否适用于默认全屏播放视频的安卓设备。就个人而言,我从未见过全屏播放视频的安卓设备。但是在 nexus 5 上运行我的方法会给出一个有趣的控制台日志消息:
'HTMLVideoElement.webkitDisplayingFullscreen' is deprecated. Please use the 'fullscreenchange' and 'webkitfullscreenchange' events instead.
所以我认为对于 android 你必须使用类似的东西:
video.addEventListener( 'webkitfullscreenchange', function ( e ) {
if ( document.webkitIsFullScreen ) {
console.log( 'Inline playback is not supported' );
} else {
console.log( 'Inline playback is supported' );
}
}, false );
但就个人而言,我从未见过此事件被触发。无论是在安卓上,还是在 iOS 上。
我在几台 iOS 设备上测试过的其他一些不起作用的东西:
- 属性 video.webkitSupportsFullscreen - 总是返回 false
- 事件 'webkitendfullscreen' 和 'webkitenterfullscreen' - 这些是有趣的 - webkitendfullscreen 工作正常,但 webkitenterfullscreen 永远不会被触发
添加:
我实际上设法找到了一个只能全屏显示视频的安卓设备(Fly IQ245 Plus)。虽然它的行为与 iOS 非常相似,但我无法通过上述任何方式检测到全屏变化。