html5+thymeleaf+js (定时器+audio标签)实现定时弹框效果并播放声音

1 篇文章 0 订阅
1 篇文章 0 订阅

最讨厌搞前端却又想转前端的卑微后端。

需求:判断十秒内数据库中是否产生了新的数据,如果产生了新的数据,那么我需要将数据展示到弹框上。前端定时器每10s执行一次,获取到数据弹框就展示出来同时播报声音。弹框持续5s后自动关闭。

根据需求可以判断我们需要用到 定时器 还有audio标签。

注意thymeleaf的写法,一开始引用声音始终不对,多亏了下面这位大大的博客

https://www.136.la/tech/show-1452595.html

引入一个mp3文件到static/audio文件夹下

音频部分
<audio id="audio1" muted>
    <source th:src="@{/audio/14044.mp3}" type="audio/mpeg" />
    您的浏览器不支持音频播放。
</audio>

弹框部分

 js部分

$(function() {
    //播放器控制
    var audio = document.getElementById('audio1');
    // 设置音量60%
    audio.volume = 0.6;
    function bofang(){
        audio.muted = false;
        //请求数据
        var dataTotal = 0;
        var alarmDatas = [];
        $.ajax({//ajax访问后台
            type: "post",
            url: "/system/index/positionAlarmData",
            dataType:"json",
            async:false,
            success:function(result){
                dataTotal = result.total;
                alarmDatas = result.rows;
            }
        });
        if(dataTotal > 0){
            var divEle = document.querySelector('.bottomAlarm');
            //清空
            $("#alarmContent").html('');

            var test = document.createElement("span");
            test.innerHTML = '1、'+ alarmDatas[0].powerName + ',' + alarmDatas[0].username;
            var alarmContent = document.getElementById('alarmContent');
            alarmContent.appendChild(test);
            divEle.style.visibility = 'visible';
            setTimeout(function () {
                divEle.style.visibility = 'hidden';
            },5000);
            audio.play(); //播放
        }
    }
    bofang();
    window.setInterval(bofang,10000);
});

后台:

拿当前时间和数据的时间比较相差几秒
where 1=1
and UNIX_TIMESTAMP(NOW())- UNIX_TIMESTAMP(pa_createtime) &lt; 10

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值