使用了 lodash.js 的 _.throttle
函数来实现节流。在这段代码中,_.throttle
函数用于包装视频播放的 ontimeupdate
事件处理函数,以确保事件处理函数每隔一定时间只会被触发一次。
具体的实现逻辑是,当视频的播放时间更新时,_.throttle
函数会限制事件处理函数的触发频率,这里设置为每秒触发一次。在事件处理函数中,获取当前视频的播放时间 currentTime
,然后将其存储在本地存储中,使用 localStorage.setItem
方法将播放时间保存为键为 "videoTime" 的值。
另外,当页面加载完毕后,使用 video.onloadeddata
事件处理函数来恢复视频的播放位置。它会从本地存储中获取之前保存的播放时间,然后将其赋值给视频的 currentTime
属性,使视频从上次播放的位置开始播放。
这样,通过节流函数的应用,可以有效地控制视频播放事件的触发频率,避免过于频繁地更新和存储播放时间。
//使用lodash.js实现节流
const video = document.querySelector('video');
//节流每个一秒记录播放的位置
video.ontimeupdate = _.throttle(() => {
//获取视频的播放时间
const currentTime = video.currentTime
//存储视频播放时间
localStorage.setItem('videoTime', currentTime)
}, 1000)
//打开页面将触发事件,将时间节点赋值给视频
video.onloadeddata = () => {
video.currentTime = localStorage.getItem('videoTime') || 0
}