我有这段代码可以在手机上开始播放视频。
document.addEventListener('touchmove', startVideo);
function startVideo() {
const video = document.querySelector('.video');
if(video.currentTime === 0 || video.paused) {
setTimeout(() => {
video.play()},100);
}
}
它给我错误
未捕获(承诺)的DOMException:play()失败,因为用户 没有先与文档互动。
但是,如果我将touchmove更改为touchstart,它将按预期工作-视频开始点按播放。 为什么?并有一种方法可以解决它,使其可以与touchmove一起使用吗?
答案 0 :(得分:0)
问题不是touchmove
。
原因是您在video.play()
回调中调用setTimeout()
。因此,当呼叫发生时,事件监听器已经返回。
您需要直接在事件监听器函数中调用它,而不是异步调用。
function startVideo() {
const video = document.querySelector('.video');
if(video.currentTime === 0 || video.paused) {
video.play();
}
}