<video>
标签 autoplay="autoplay"
属性在 Safari 中工作正常。
在 iPad 上测试时,必须手动激活视频。
我认为这是一个加载问题,所以我运行了一个循环来检查媒体的状态:
videoPlay: function(){
var me = this;
console.log('STATE: ' + $("#periscopevideo").get(0).readyState);
if ($("#periscopevideo").get(0).readyState != 4){
setTimeout(function(){me.videoPlay();}, 300);
}
else {
$("#periscopevideo").get(0).play();
}
}
在 iPad 上,状态保持在 0
。在我的桌面野生动物园中,它经过 0
, 1
最后 4
。在 iPad 上,如果我手动点击“播放”箭头,它只会到达 4
。
此外,通过点击调用 $("#periscopevideo").get(0).play()
onClick
也可以。
Apple 在自动播放方面是否有任何限制? (顺便说一句,我正在运行 iOS 5+)。
原文由 Jem 发布,翻译遵循 CC BY-SA 4.0 许可协议
iOS 10 更新
从 iOS 10 开始,对自动播放的禁令已解除 - 但有一些限制(例如,如果没有音轨,则可以自动播放 A)。
要查看这些限制的完整列表,请参阅官方文档: https ://webkit.org/blog/6784/new-video-policies-for-ios/
iOS 9 及之前版本
从 iOS 6.1 开始, 无法再在 iPad 上自动播放视频。
我对他们为什么禁用自动播放功能的假设?
好吧,由于许多设备所有者在他们的设备上有数据使用/带宽限制,我认为 Apple 认为用户应该自己决定何时开始带宽使用。
经过一番研究后,我在 Apple 文档中找到了以下关于在 iOS 设备上自动播放的摘录,以证实我的假设:
以下是 Safari HTML5 参考页面 上的单独警告,说明嵌入式媒体无法在 iOS 上的 Safari 中播放的原因:
What this means (in terms of code) is that Javascript’s
play()
andload()
methods are inactive until the user initiates playback, unless theplay()
orload()
方法由用户操作触发(例如点击事件)。基本上,用户启动的播放按钮有效,但
onLoad="play()"
事件不起作用。例如,这将播放电影:
而以下内容在 iOS 上不会执行任何操作: