需求:
微信端看视频,关闭微信的窗口时需要记录当前播放时间,下次在进入的时候从上次保存的进度开始播放
面临的问题:
- 监控微信离开页面
- 重新进入时候从上传保存的地方播放
设备环境:iPhone 6s 微信
处理:
- 监控离开
开始的时候使用onbeforeunload事件,发现微信端离开时并未调用记录进度的脚本
改用 pagehide事件,貌似也没调用记录进度的脚本
因此改用一个折中的方式
使用video.ontimeupdate事件做监控,实时记录进度 - 重新进入的时候需要从上次播放的地方开始播放
开始在视频初始化时设置currentTime进度,并不生效
经过多方折腾,在video.onloadeddata事件中设置,解决了问题
代码清单:
实时记录进度
audio.ontimeupdate = function () {
if(window.localStorage) {
var courseId = $('#courseId').val();
if(!playBackCache) {
playBackCache = {};
}
playBackCache[courseId] = audio.currentTime;
localStorage.setItem('playBackCache' , JSON.stringify(playBackCache));
}
};
在上次记录的进度开始播放
//_currentTime 是从上面的缓存中获取的时间进度
audio.onloadeddata = function() {
if(_currentTime > 0) {
audio.currentTime = _currentTime;
}
}
其实我觉得我的方法并不完善,发布出来也想知道大家对于这样的需求是怎么处理的,可以讨论一下
PS:
经过测试,在onloadeddata并不会设置audio.currentTime,再次进行改造
//_currentTime 是从上面的缓存中获取的时间进度
audio.ontimeupdate= function() {
if(_currentTime > 0) {
audio.currentTime = _currentTime;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。