【问题标题】:Detect if browser / device can play HTML5 video inline before playing检测浏览器/设备是否可以在播放前内联播放 HTML5 视频
【发布时间】:2013-08-08 15:21:47
【问题描述】:

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

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

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

【问题讨论】:

  • 你有没有找到解决这个问题的方法?
  • @JSuar 我还没有找到解决方案,并且认为目前无法检查 JavaScript 是否会在本机播放器中自动播放视频。我认为浏览器构建者需要向浏览器添加一些额外的信息,这样才能读取“navigator.video.playsInBrowser”。
  • 如果您仍然需要这方面的帮助,我有代码可以将 iPhone 浏览器检测为 if,else 语句,如果您需要的话。当然,iPhone 会在自己的视频播放器中播放,而不是在浏览器中播放。
  • @OferHerman 感谢您的评论。只有您分享的问题显示了如何使用不支持视频标签的浏览器的后备。我面临的问题是,例如 iphone 上的 safari 和桌面上的 chrome 都支持 videotag,但 iPhone 上的 safari 决定在浏览器之外在它自己的播放器中播放视频。需要进行检测,因此例如视频上的叠加层只能应用于在浏览器中播放视频的浏览器,而支持 videotag 的浏览器决定在浏览器之外播放视频的浏览器可以像图像一样具有后备效果。

标签: iphone html5-video detection


【解决方案1】:

我知道这是一个老问题,但这对我来说是个大问题,而且网上没有很多信息。但是在我在这个帖子中找到 Alexey 的答案后,我可以回答你的问题:Detect if client allows inline media playback for HTML5 video

不,您无法在播放前检测浏览器/设备是否支持内嵌视频。

这是个坏消息。问题是,对 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;
};

【讨论】:

  • 如果此问题与您链接的问题完全相同,请将其标记为重复,而不是留下答案。如果不是重复的,请留下此问题的完整答案,而不是仅提供链接的答案。
  • 这不是重复的,因为链接问题中的解决方案仅在视频播放后才有效。老实说,我留下的实际上是一个评论。除了因为我还没有达到 50 声望点,我无法评论。因此,向原始发帖人和以我的方式找到此信息的其他人提供信息的唯一方法是将其作为答案。
  • 我只是大大扩展了它。如果您现在不接受它作为答案,请直接说出来而不是投反对票,我会删除它。
猜你喜欢
  • 2013-08-20
  • 2016-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-20
  • 1970-01-01
相关资源
最近更新 更多