我目前正在工作的一个网络项目,我需要开始播放一个视频后,一个滑动事件,我无法使这个工作。我正在使用HTML5视频播放器和JS检测刷事件。我第一次尝试使用hammer.js可以更容易地检测using事件,但在努力工作之后,我开始使用普通的js。
经过一些调试,我注意到视频HTMLElement的播放方法返回了一个承诺。当我从我的swipe处理程序调用video.play()时,这个承诺总是被拒绝,并附带以下消息:
NotAllowedError (DOM 35):用户代理或当前上下文中的平台不允许请求,可能是因为用户拒绝了权限。
由于这个问题只存在于iOS中,我开始阅读苹果开发人员的文档,并注意到许多特性只有在“显式用户操作”之后才可用。例如:
注意: webkitEnterFullscreen()方法只能在响应用户操作(例如单击按钮)时调用。例如,您不能在响应load事件时调用webkitEnterFullscreen()。
来源:Video/ControllingMediaWithJavaScript/ControllingMediaWithJavaScript.html
从js调用play方法也是如此。它只有在响应用户操作时才能工作。
我的问题是,苹果是如何定义“用户行为”的?因为很明显,滑动事件不是用户操作。
发布于 2017-06-22 11:14:15
我不确定他们是否有一个严格的定义,但对于视频,通常是“点击”一个播放按钮。
从一个角度来看,这确实是有意义的--人们的想法可能是,滑动往往与拒绝某件东西有关,因此不适合开始一个视频。
对视频敏感的原因通常是因为用户在移动连接上意外地花费了大量的数据。
如今,这似乎不再那么令人担心了--例如,最新版本的iOS现在支持iPhones上的内联视频自动播放,而这在过去曾被屏蔽过。
https://stackoverflow.com/questions/44675028
复制相似问题