该<video>标签autoplay="autoplay"属性的作品在Safari罚款。
<video>
autoplay="autoplay"
在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(); } }
该状态仍在0iPad上。在我的桌面野生动物园中,它会通过0,1最后4。在iPad上,只有4在我手动点击“播放”箭头时才能到达。
0
1
4
此外,$("#periscopevideo").get(0).play()通过点击呼叫onClick也可以。
$("#periscopevideo").get(0).play()
onClick
苹果在自动播放方面是否有任何限制?(顺便说一下,我正在运行iOS 5+)。
iOS 10更新
自iOS 10起,自动播放的禁令已取消-但存在一些限制(例如,如果没有音轨,则可以自动播放A)。
iOS 9及更低版本
从iOS 6.1开始, 不再可以在iPad上自动播放视频。
我对他们为什么禁用自动播放功能的假设?
好吧,由于许多设备所有者在其设备上都有数据使用量/带宽限制,我认为苹果公司认为用户自己应该决定何时启动带宽使用量。
经过一些研究,我在Apple文档中找到了以下有关iOS设备上自动播放的摘录,以确认我的假设:
“苹果已经决定通过脚本和属性实现来禁用在iOS设备上自动播放视频。
在Safari中,在iOS上(对于包括iPad在内的所有设备),用户可能位于蜂窝网络上,并且按数据单元收费,因此将禁用预加载和自动播放功能。 在用户启动数据之前,不会加载任何数据。 ” -Apple文档。
这是“ SafariHTML5参考”页面上的一个单独警告,说明为什么无法在iOS的Safari中播放嵌入式媒体:
警告 :为防止用户自费地通过蜂窝网络进行下载,嵌入式媒体不能在iOS的Safari中自动播放 用户始终启动播放。启动播放后,iPhone或iPodtouch上会自动提供一个控制器,但对于iPad,您必须设置controls属性或使用JavaScript提供一个控制器。
这意味着(就代码而言)是 除非 用户操作(例如,单击事件)触发了或方法, 否则 在用户启动播放之前,JavaScriptplay()和load()方法是不活动的。 __play()``load()
play()
load()
play()``load()
基本上,用户启动的播放按钮有效,但onLoad="play()"事件无效。
onLoad="play()"
例如,这将播放电影:
<input type="button" value="Play" onclick="document.myMovie.play()">
而以下内容在iOS上什么也不做:
<body onload="document.myMovie.play()">