2017-06-21 78 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上的內聯視頻自動播放功能,過去已被屏蔽。