Chrome浏览器 报错:Uncaught (in promise) DOMException

Chrome浏览器报错:Uncaught (in promise) DOMException audio标签播放失败问题

小白我近期做了一个根据 websocket 长连接告警消息实时推送的需求:此处需要弹窗也需要铃声提醒用户, 重点是js直接调用 audio.play(); 方法 F12 查看提示: Uncaught (in promise) DOMException, -这播放时心情好的时候给你响一下,经常不得劲,直接报错不响了-,这报错扔度娘还是挺多解决办法的,但是好多不是不奏效,就是达不到自己使用的效果下面上代码

当前方式是将触发播放次数增加来达到提示音播放的效果,loop 设置为 true为无限循环播放 muted 设置为 true 是将播放器处于静音状态,相当于定时器成功开启播放提示音后,一直处于循环播放的状态,只是被设置为静音用户听不到,再暗处循环播放,只要在某个函数内将 muted 静音属性取消,扬声器即可响起你想要播放的提示音 – 完美的达到了 要它响的时候就响 – 不响的时候就不让他响

还有就是修改浏览器设置的方法,但是咱能用代码解决的问题就坚决不用手动去搞!这么多用户一个个的让他们去设置,这不但麻烦咱java攻城狮还得被质疑行还是不行【捂脸】

查了很多播放方式根据自己需求整理了一个Chrome上可行的,铃声播放方式有点麻烦实际解决了我的问题。

<!-- 播放标签 -->
<audio id="chatAudio" controls="controls" hidden="true" loop="true">
		<source src="<%=request.getContextPath()%>/001.WAV"    type="audio/mpeg" /> 
</audio>
		
<script type="text/javascript">
var audio = null;
var interval  = null;

function onanplaythrough() {
	    audio = document.getElementById("chatAudio");
	    //判读是否播放
		if (audio.paused) {  
			audio.paused=false;
			audio.muted = true;
			//没有就播放
			audio.play();
		}else {
			//播放成功后清除定时器的循环
			clearInterval(interval);
		}
	}
//此处代码加载时自动循环调用,用户交互就能成功调用播放-
interval = setInterval("onanplaythrough()",1);

//开启提示音,将audio对象取消静音
function openAuio(){
  audio.muted = false;
}

//关闭提示音,直接将播放器静音
function closeAudio(){
	if (audio == null) {
		audio = document.getElementById("chatAudio");
	}
	audio.muted = true;
	// audio.pause();
}

</script>

浏览器启动后处于正常状态
浏览器启动后处于正常状态
在这里插入图片描述
**此处可以看到-当websocket收到消息的时候 将 audio对象取消静音,浏览器即可播放提示音 **

下面附上提示音下载地址: https://pan.baidu.com/s/1X9rgZQQTowyL3pSMw9IkmA

提取码:s4tg

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值