【发布时间】:2015-09-18 13:39:17
【问题描述】:
有没有办法检测是否允许在没有用户手势的情况下对视频元素调用 play()?
在 Android Chrome 上会给出此警告:
Failed to execute 'play' on 'HTMLMediaElement': API can only be initiated by a user gesture.
因此,在 Chrome Android 上,需要用户手势才能开始播放视频,而桌面版 Chrome 则没有。 有没有办法检测我会得到哪种行为?
我希望我的应用程序的行为略有不同,具体取决于是否允许以编程方式调用 play。
我尝试使用Modernizr.videoautoplay,但它会检查元素上的autoplay 属性,这不是一回事。这会给 IE11 和 Edge 带来误报。
编辑:添加了an example。视频将在 Chrome 桌面和 Windows 8 或 10 上的 IE11 或 Edge(延迟 3 秒)中自动开始播放。对于 Chrome@Android,需要用户交互(单击按钮),并且可以在控制台中看到错误消息。
【问题讨论】:
-
你能发布一个有这个错误的代码示例吗?
-
嗨@Patrick 我已经用一个示例链接更新了这个问题。它有点复杂(将帧逐个添加到视频中)但可以看到问题
-
嗨@oskbor,你解决了吗?
-
不,没有找到检测方法
-
我最终只是过滤了 var isMobile = false; if ((/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase())) || (/Mobi/i.test(navigator.userAgent.toLowerCase( )))) isMobile = true;
标签: javascript html5-video modernizr feature-detection