移动设备无法自动播放视频或音频似乎是一种常见的抱怨。根据Apple Developer Library的说法,它是故意禁用的:
在iOS上的Safari(适用于所有设备,包括iPad)中,用户可能位于蜂窝网络上并按数据单元收费,因此会禁用预加载和自动播放。在用户启动数据之前不会加载任何数据。这意味着JavaScript play()和load()方法在用户启动回放之前也处于非活动状态,除非用户操作触发play()或load()方法。换句话说,用户启动的播放按钮有效,但onLoad =“play()”事件不起作用。
允许直接用户操作触发播放事件。我的问题是,我有视频缩略图,点击时加载视频元素,并在加载后播放。在移动设备上,用户必须单击两次以使视频播放效果不佳。我很沮丧,因为我的用户实际上 触发了一个播放动作,但是在其间发生了一些其他事件。我开始测试一个不同的用户触发事件,以了解苹果称之为“直接用户操作”的范围或限制。
我发现此代码触发了播放事件:
$(".clickElement").click(function(){
$("video").get(0).play();
});
虽然没有:
$(".clickElement").click(function(){
setTimeout(function(){
$("video").get(0).play();
},0);
});
对于不同的超时持续时间以及使用setInterval时也是如此。
我的问题是apple如何定义直接用户操作?显然超时和间隔不够直接。有没有办法让我“直接”从用户触发播放事件,并让我的视频元素有足够的时间进入页面?