我在使用Swup.js.在两个页面之间转换英雄视频时遇到问题
目前,我可以使用一个名为"transition wipe"的自定义类转换视频元素,该类在页面更改时将视频宽度从50%更改为100%,效果良好,但加载下一页时视频会重新启动。
有没有办法在转换时暂停视频,并从上一个视频停止的地方播放下一个视频?我的意图是让视频在页面之间呈现动态,并在不重新启动的情况下连续播放。我似乎找不到任何解决方案,所以任何建议都将不胜感激!:(
您可以使用Web Storage API来存储视频在浏览器中的位置。下面是两个抽象,它们使用localStorage
获取并设置存储的视频位置。
/**
* Returns 0 or the position of the video.
*/
const getVideoPosition = () => {
return Number(localStorage.getItem('video-position'));
}
/**
* Saves the video in the current position.
*/
const setVideoPosition = value => {
localStorage.setItem('video-position', value);
}
每次重新加载后,选择视频元素,获得保存的位置,并更新视频的currentTime
属性以从该位置开始。
const position = getVideoPosition();
video.currentTime = position;
让您的视频收听timeupdate
事件以不断保存最后一个位置,并收听ended
事件以重置保存的位置。
video.addEventListener('timeupdate', ({ target }) => {
const { currentTime } = target;
setVideoPosition(currentTime);
});
video.addEventListener('ended', ({ target }) => {
setVideoPosition(0);
});