我知道可以通过navigator.userAgent
检查设备是否为iPhone,但还有其他设备,有些我不知道会在自己的播放器中播放视频。
可以制作一个所有不支持内联播放视频的浏览器/设备列表,但我想知道是否有另一种解决方案。
在JavaScript中是否可能检测浏览器(例如iPhone上的Safari)是否在其自己的播放器中播放视频而不是内联播放?这样就可以显示替代内容,如图像,而不是视频。
我知道可以通过navigator.userAgent
检查设备是否为iPhone,但还有其他设备,有些我不知道会在自己的播放器中播放视频。
可以制作一个所有不支持内联播放视频的浏览器/设备列表,但我想知道是否有另一种解决方案。
在JavaScript中是否可能检测浏览器(例如iPhone上的Safari)是否在其自己的播放器中播放视频而不是内联播放?这样就可以显示替代内容,如图像,而不是视频。
我知道这是一个老问题,但对我来说这是一个大问题,在网上找不到很多信息。但在这个主题中,我找到了Alexey的答案,可以回答你的问题:检测客户端是否允许HTML5视频内联播放。
不,你无法在播放视频之前检测浏览器/设备是否支持内联视频。
这是坏消息。问题在于,像iPhone上的iOS Safari这样的浏览器的唯一可靠检查是开始播放视频,然后嗅探它是否立即进入全屏本机模式。即使在触发播放事件时自动进入全屏模式的播放器中,这也会失败。
好消息是,至少对我来说,通过在开始播放时检测它以及使用CSS媒体查询来检测屏幕大小,我应该能够完成我想做的事情。
以下是从我的播放器JS中提取的相关部分,非常源自上面的链接。
仅在视频开始播放后检测内联支持
// Expose useful properties of the video
var vid = (function(){
var elem = document.getElementsByTagName('video')[0];
return {elem:elem};
})();
// Test for inline playback support
var inlineTest = (function() {
if ( vid.elem.webkitFullscreenchange || vid.elem.mozFullscreenchange || vid.elem.MSFullscreenChange || vid.elem.fullscreenchange ) {
return 'inline-no';
} else {
return 'inline-yes'
}
});
// play() functions
vid.elem.onplay = function(){
var inlineSupport = inlineTest();
document.body.className += ' ' + inlineSupport;
};