虚拟主机域名注册-常见问题网络编程问题 → JS


Uncaught (in promise) AbortError: The play() reque
作者:

Chrome浏览器,js控制audio出现 421错误 Uncaught (in promise) AbortError: The play() request was interrupted by a call to pause()

经测试,目前仅在Chrome中出现,其他IE、Firefox等浏览器中均为发现,因Chrome浏览器加载音频的方式不一样,

解决方法:

调用play()这个函数之前,调用load()这个函数就解决了

另一种方法:

最近在做项目的时候发现一个如题的控制台报错。

 

报错截图

一看右侧的报错文件是undefined

这下苦恼了,定位不到问题所在。

今天解决了这个问题,就来分享一下。

问题的关键所在是在执行了play()方法以后立即执行pause()方法。反之亦然

以下贴出代码

HTML:

<button id="btn1">test</button>

JS:

var music=new Audio();

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下就会出错)

当然,我们可以设置一个保护性延时

如下

var music=new Audio();

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下的初衷

所以可以用这种方法

var music=new Audio();

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)

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)



来源:
阅读:3916
日期:2017-05-15

推荐朋友 】 【 评论 】  【 字体: 】 
上一篇:js变量不存在代码将不会被执行不显示的问题解决方法
下一篇:为IIS FTP指定被动模式端口范围
  >> 相关文章
  没有相关文章。
发表评论


点  评: 字数0
用户名:  密码:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款