9

我知道我可以检查navigator.userAgent设备是否是 iPhone,但还有其他设备,有些我不知道哪些设备会在它自己的播放器中播放视频。

可以列出所有不播放视频的浏览器/设备的列表,但我想知道是否有其他解决方案。

是否可以在 JavaScript 中检测浏览器(例如 iPhone 上的 Safari)是否在其自己的播放器中播放视频而不是内联?因此,可以显示替代方案,例如图像,而不是视频。

4

1 回答 1

5

我知道这是一个老问题,但对我来说这是一个大问题,网上没有很多信息。但是在我在这个线程中找到 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;
};
于 2015-09-08T18:16:53.953 回答