在ios safari上使用HTML5视频元素的readyState问题

时间:2012-07-24 15:13:20

标签: ios html5 safari

似乎在iPad(iOS v.5.1.1)上,Safari根据规范不保留视频元素的readyState值。即使从视频源readyState加载等于零。

我做了demonstration jsfiddle which continuously checks the video's readyState。一个有趣的观察:readyState仅在单击播放按钮后才会更改。

实际上,我期望readyState在加载过程中切换到更高的数字(就像我测试的桌面上的所有浏览器一样 - 包括Safari。)是否有解决方法?我在这里弄错了吗?

1 个答案:

答案 0 :(得分:5)

来自Apple developer documentation

  

注意:Safari 5.0及更高版本支持preload属性。 iOS上的Safari永远不会预加载。

根据Apple的说法,移动设备上的所需行为是只有在您主动请求资源后才开始加载,以免浪费带宽或电池。

关于你的问题,这意味着Apple正在遵守规范。由于没有发生预加载且仅在您单击播放按钮后开始加载,因此readyState在该时间点之前为零。

但是,video标记包含特殊事件,应该提供比readyState更多的信息。

  • onCanplay
  • onCanplaythrough
  • onProgress

再次引用Apple developer library (Using DOM Events to monitor load progress)

  

注意:在iPad上,在用户点击海报或占位符之前,Safari不会开始下载。目前,以这种方式开始的下载不会发出进度事件。