audio autoplay无效的问题

这篇博客探讨了如何在浏览器环境中处理自动播放报警声音的问题。由于某些浏览器限制,无法直接自动播放声音,但可以通过监听用户首次点击事件来实现。文章详细介绍了在Vue.js应用中,使用 Vuex 状态管理库,结合组件和事件监听,来控制告警声音的开关状态。用户点击页面后,可以自动播放警告音,并通过图标切换声音开关。同时,提供了关闭和开启告警声音的函数实现。
摘要由CSDN通过智能技术生成

前言:当有报警信息推送过来的时候,播放自动播放报警声音
在这里插入图片描述
有些浏览器版本不支持自动播放,需要用户手动点击播放
规律:只要进入页面,进行一次点击事件,便能自动播放音乐

 data() {
    return { 
      music: {},
    };
  },
mounted() {
    this.init();
    this.music = new Audio();
    this.music.src = "/static/alarm.wav";
    this.music.muted = this.muted;
    //如果点击了一次,则可以自动播放声音
    document.addEventListener('click', this.initMusic);
  },
  computed: {
    ...mapGetters(["muted"])
    }

  methods: {
    initMusic(event){
        if(event.target.id != 'alarm-img-icon'){
             this.music.muted = false; 
             this.$store.commit('setMuted',false)
        }
        document.removeEventListener('click',this.initMusic);
    },
   }

子页面:

import { mapGetters } from "vuex";

<div class="alarm-icon" >
          <el-tooltip class="item" effect="dark" :content="!muted ? '关闭告警声音':'开启告警声音'" placement="top">
            <i id="alarm-img-icon" :class="['el-icon-bell',!muted?'blue':'']" @click="toggleAlarmAudio"></i>
        </el-tooltip>
      </div>
computed: {
      ...mapGetters(["muted"]),
}

 //设置告警声音
    toggleAlarmAudio(){
        this.$parent.music.muted  = !this.muted;
        this.$store.commit("setMuted",!this.muted);
    },

store

store:{
 muted:true,
},
 mutations: {
    setMuted(state,muted){
        state.muted = muted;
    },
   }
getters:{
	muted: state => state.muted,
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值