2017-06-21 32 views
1

我目前正在开发一个web项目,我需要在滑动事件后开始播放视频,但无法完成此项工作。我正在使用HTML5视频播放器和JS来检测滑动事件。我第一次尝试使用hammer.js,这使得更容易检测到滑动事件,但在努力获得这个工作之后,我开始使用普通的js。苹果如何定义“用户操作”?

经过一番调试,我发现视频HTMLElement的播放方法返回一个承诺。

NotAllowedError(DOM异常35)::当我打电话video.play()从我的滑动处理这一承诺总是与以下消息拒绝该请求不被 用户代理或在当前上下文中的平台上,可能允许因为 用户拒绝了权限。

由于此问题仅在iOS中存在,我开始阅读苹果开发者文档,并注意到很多功能仅在“显式用户操作”后才可用。例如:

重要提示:webkitEnterFullscreen()方法只能在 响应用户操作(例如单击按钮)时调用。对于 示例,您不能调用webkitEnterFullscreen()以响应加载事件。

来源:https://developer.apple.com/library/content/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/ControllingMediaWithJavaScript/ControllingMediaWithJavaScript.html

这同样适用于从调用JS play方法。它只有在响应用户操作而被调用时才有效。

这里我的问题是,苹果如何定义“用户行为”?因为显然,滑动事件不是用户操作。

回答

0

我不确定他们是否有严格的定义,但对于视频来说,它通常是“点击”播放按钮。

从一个角度来看,这确实是有道理的 - 这种想法可能是,滑动往往与解雇某件事物有关,因此不适合允许开始播放视频。

视频敏感度的原因通常与用户意外地在移动连接上运行大量数据账单有关。

这些日子似乎不是那么值得关注 - 例如,iOS的最新版本现在支持iPhones上的内联视频自动播放功能,过去已被屏蔽。