Index: ssts-web/src/main/webapp/js/speaker.js =================================================================== diff -u -r31941 -r31971 --- ssts-web/src/main/webapp/js/speaker.js (.../speaker.js) (revision 31941) +++ ssts-web/src/main/webapp/js/speaker.js (.../speaker.js) (revision 31971) @@ -61,7 +61,9 @@ * tts语音引擎 */ function Speaker(){ + this.arr = []; this.enabled = false; + this.timer = true; this.init = function(){ try{ if(this.enabled && !this.sapi){ @@ -73,6 +75,7 @@ //语音提示 this.speak = function(msg){ + var that = this; if(msg && this.enabled){ msg = msg +''; if(msg.length){ @@ -85,10 +88,24 @@ if(getChromeVersion()){ var version = getChromeVersion(); if(version >= 85){ - var url = WWWROOT+'/disinfectSystem/baseData/textToVoiceController/getVoiceByText.mhtml?text=' + encodeURI(msg); - var n = new Audio(url); - n.src = url; - n.play(); + this.arr.push(WWWROOT+'/disinfectSystem/baseData/textToVoiceController/getVoiceByText.mhtml?text=' + encodeURI(msg)); + var arr = that.arr; + if(this.timer){ + this.timer = false; + var myAudio = new Audio(); + myAudio.preload = true; + myAudio.controls = true; + myAudio.src = arr.shift();//每次读数组第一一个元素 + myAudio.addEventListener('ended', playEndedHandler, false); + myAudio.play(); + myAudio.loop = false;//禁止循环,否则无法触发ended事件 + function playEndedHandler(){ + that.timer = true; + myAudio.src = arr.shift(); + myAudio.play(); + !arr.length && myAudio.removeEventListener('ended',playEndedHandler,false);//只有一个元素时解除绑定 + } + } return; } }