Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当用户与页面交互时,是否有要检测的事件?_Javascript_Html_Events_Video_Autoplay - Fatal编程技术网

Javascript 当用户与页面交互时,是否有要检测的事件?

Javascript 当用户与页面交互时,是否有要检测的事件?,javascript,html,events,video,autoplay,Javascript,Html,Events,Video,Autoplay,我试图在用户与页面交互后立即自动播放视频。如果我以前播放过视频,显然会出现安全错误: Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first. 这是公平的,我发现了这个错误,现在想注册一个事件,在用户与页面交互后立即重试播放 =>是否有此类活动可用 我尝试在mouseover/mousemove/touchmove/click/focus

我试图在用户与页面交互后立即自动播放视频。如果我以前播放过视频,显然会出现安全错误:

Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first.
这是公平的,我发现了这个错误,现在想注册一个事件,在用户与页面交互后立即重试播放

=>是否有此类活动可用


我尝试在mouseover/mousemove/touchmove/click/focus/visibilitychanged上注册事件,但它不是最佳的,经过一些测试后也不是很可靠

注册多个事件并等待其中一个起作用

让isplay=false;
[“单击”、“鼠标移动”、“鼠标移动”、“鼠标移动”、“触摸移动”、“焦点”]。forEach((eventName)=>{
window.addEventListener(eventName,()=>{
如果(!显示){
试一试{
//在这里播放视频
console.log(“正在播放视频”);
isplay=true;
}捕获(e){
控制台。警告(e.message);
}
}
}); 

});我知道这是一个老问题,但对于处理此问题的任何人,
play()
都会返回一个承诺。因此,您可以执行类似于以下代码的操作。此代码将尝试每5秒触发一次
play()
函数,直到成功触发为止,然后清除间隔

不确定它是否也适用于视频,但我认为是这样的

const tryToPlay=setInterval(()=>{
常量音频=新音频(音频文件);
音频播放
.然后(()=>{
clearInterval(尝试播放);
})
.catch(错误=>{
console.info('用户尚未与文档交互');
});
}, 5000);