关于 Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause() 错误
最近在做项目的时候发现一个如题的控制台报错。

一看右侧的报错文件是undefined
这下苦恼了,定位不到问题所在。
今天解决了这个问题,就来分享一下。
问题的关键所在是在执行了play()方法以后立即执行pause()方法。反之亦然
以下贴出代码
HTML:
JS:
music.src="/1.mp3";//这里替换成一个有效的音频文件地址以方便测试
music.loop=true;
var playStatus=false;
function playOrPause(){
if(playStatus){
music.pause();
}else{
music.play();
}
playStatus=!playStatus;
}
for(var i=0;i<10;i++){
document.querySelector("#btn1").click();
}
标红处的代码是连续点击10下#btn1 亦即连续快速执行10次playOrPause() 会出现图1的报错情况(当然 连续2下就会出错)
当然,我们可以设置一个保护性延时
如下
music.src="/1.mp3";
music.loop=true;
var playStatus=false;
var lastRunTime=Date.now();
function playOrPause(){
var currentTime=Date.now();
var protectTime=100;//设置保护性延时 单位毫秒,不要小于50 建议100以上
if((currentTime-lastRunTime)<protectTime){
return;//两次执行太过频繁,直接退出
}
if(playStatus){
music.pause();
}else{
music.play();
}
playStatus=!playStatus;
lastRunTime=Date.now();
}
for(var i=0;i<10;i++){
document.querySelector("#btn1").click();
}
但是,这样就违背了我们想模拟连按10下的初衷
所以可以用这种方法
music.src="/1.mp3";
music.loop=true;
var playStatus=false;
var lastRunTime=Date.now();
function playOrPause(){
var currentTime=Date.now();
var protectTime=100;//设置保护性延时 单位毫秒,不要小于50 建议100以上
if((currentTime-lastRunTime)<protectTime){
return;//两次执行太过频繁,直接退出
}
if(playStatus){
music.pause();
}else{
music.play();
}
playStatus=!playStatus;
lastRunTime=Date.now();
}
var counter=10;//要连点的次数
var timer=setInterval(function(){
if(counter>0){
document.querySelector("#btn1").click();
}else{
clearInterval(timer);
}
counter--;
},500)
关于 Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause() 错误的更多相关文章
- Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause().
解决方法: audio.load() let playPromise = audio.play() if (playPromise !== undefined) { playPromise.then( ...
- chrome播放语音时,在chrome 控制台中报 DOMException: The play() request was interrupted by a call to pause(). 的问题.
$(document).ready(function () { var audioElement = $( '<audio>' + ' <source src="" ...
- 音频播放时出现 Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first. https://goo.gl/xX8pDD
<audio id="play" controls="controls" loop="loop"> <source src ...
- Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first.
最近在开发一个网站时,有个需要是 如果有新预警信息要在网页中播放提示音.页面打开会请求是否有新信息,有则播放提示音.在Chrome的最新浏览器中,播放会报错,控制台显示Uncaught (in pro ...
- patchUpload.vue?5e29:406 Uncaught (in promise) DOMException: Failed to execute 'readAsArrayBuffer' on 'FileReader': The object is already busy reading Blobs.
patchUpload.vue?5e29:406 Uncaught (in promise) DOMException: Failed to execute 'readAsArrayBuffer' o ...
- 填坑——audio不能正常播放,控制台报错 Uncaught (in promise) DOMException
原文:https://blog.csdn.net/Mariosss/article/details/87861167 用chrome调试页面时,发现audio控件有时不能正常播放音频,控制台报错 Un ...
- 解决Chrome浏览器无法自动播放音频视频的问题,Uncaught (in promise) DOMException
转载自:http://www.nooong.com/docs/chrome_video_autoplay.htm 在最新版的Chrome浏览器(以及所有以Chromium为内核的浏览器)中,已不再允许 ...
- vue 运行项目时,Uncaught (in promise) DOMException: Failed to execute 'open' on 'XMLHttpRequest': Invalid URL
npm run dev 运行项目后 验证码显示不出来 并报错 Uncaught (in promise) DOMException: Failed to execute 'open' on 'XML ...
- 网页视频不能自动播放?HTML5 video报错Uncaught (in promise) DOMException解决方法
话说发哥四年前写了一个网页,如上图效果,实际网址http://pano.z01.com ,话说做好时是正常的,突然某一天,客户说你这个网站动画不见了,这是什么原因? 结果检查脚本一切正常. 其实也不是 ...
随机推荐
- Oracle 中新增字段后patch
begin ad_zd_table.patch('APPLSYS', 'CUX_3_GL_FARMER_BALANCE'); end ;
- sql server2008安装说明 详细完整版
SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本. 在现今数据的世界里,公司要获得成功和不断发展,他们 ...
- vim中替换命令
在VIM中进行文本替换: 1. 替换当前行中的内容: :s/from/to/ (s即substitude) :s/from/to/ : 将当前行中的 ...
- jenkins调度selenium脚本不打开浏览器解决办法
原文地址: http://blog.csdn.net/achang21/article/details/45096003 The web browser doesn't show while run ...
- Xslt 1.0中使用Array
XSLT Variable Arrays I recently answered a question on a popular programmers forum about how to stor ...
- 配置移动前端开发调试环境(nodejs+npm+weiner的安装和配置使用)
这段时间发现做移动端的开发调试是一大难题,网上逛了逛发现有一些工具可用,如chrome的远程调试,实际测试过程中我始终调试不成功,听说被墙后是不行的,所以最终找了如下的方法. 因为基于nodeJS环境 ...
- 修改server 2008远程桌面端口
在“开始”-"运行"菜单里,输入regedit HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Serve ...
- ngx.lua中遇到的小问题2
用lua+drizzle在数据库中插入数据失败(不能访问数据库) 后面发现原来是nginx配置文件中的drizzle模块部分最后多了一行 content_by_lua 'ngx.say(" ...
- UGUI代码分析
1.canvas,screen模式和world模式区别:screen的绑定摄像机与canvas相对位置不会改变不可改变canvas,world模式下有个event camera相对位置可改变,canv ...
- Python爬虫个人梳理(代码有空写)
这里多是摘抄的,只是用于个人理解. 1.urlopen().read()是爬取网页的内容,出来可能是一堆的源代码.和我们右击网页查看是一样的. 2.当用到http请求的时候,我们可以使用Request ...