Commit 6169f278bdf34ac822d2cb19eb9444ed6d44c721
1 parent
fc980668
修复浏览器无法自动播放语音
Showing
3 changed files
with
42 additions
and
29 deletions
src/gxb-ide/CodingEditer.js
| @@ -94,7 +94,7 @@ | @@ -94,7 +94,7 @@ | ||
| 94 | * 播放代码 | 94 | * 播放代码 |
| 95 | * Created by Kira on 2017-02-08 | 95 | * Created by Kira on 2017-02-08 |
| 96 | */ | 96 | */ |
| 97 | - playCoding: function(){ | 97 | + playCoding: function(e){ |
| 98 | CodingEditer.editable(1); | 98 | CodingEditer.editable(1); |
| 99 | CodingEditer.flag = false; | 99 | CodingEditer.flag = false; |
| 100 | if (CodingEditer.firstPlay == 0) { | 100 | if (CodingEditer.firstPlay == 0) { |
| @@ -115,30 +115,36 @@ | @@ -115,30 +115,36 @@ | ||
| 115 | var playTotalTime = 0; | 115 | var playTotalTime = 0; |
| 116 | 116 | ||
| 117 | $('#recordertab a:eq(1)').tab('show'); | 117 | $('#recordertab a:eq(1)').tab('show'); |
| 118 | + // 处理浏览器无法自动播放语音时候,编辑器显示空内容 | ||
| 119 | + if (e && !e.status) { | ||
| 120 | + var timeoutcontroller = null; | ||
| 121 | + CodingEditer.recordtimeoutcontrolls.push(timeoutcontroller); | ||
| 122 | + } else { | ||
| 123 | + for (var i = 0; i < playbackrecord.length; i++) { | ||
| 124 | + if (playbackrecord[i].trigger === 1) { | ||
| 125 | + playTotalTime += parseInt(playbackrecord[i].intervaltime); | ||
| 126 | + }else if (playbackrecord[i].trigger === 0) { | ||
| 127 | + var timeoutcontroller = null; | ||
| 128 | + var replayinterval = playbackrecord[i].intervaltime; | ||
| 129 | + | ||
| 130 | + if (!CodingEditer.isPause) { | ||
| 131 | + starttime = replayinterval - (CodingEditer.audioTime - playTotalTime); | ||
| 132 | + CodingEditer.isPause = true; | ||
| 133 | + }else{ | ||
| 134 | + // if (i == 0) { | ||
| 135 | + // starttime = replayinterval; | ||
| 136 | + // }else{ | ||
| 137 | + // starttime = parseInt(starttime) + parseInt(replayinterval); | ||
| 138 | + // } | ||
| 139 | + starttime = parseInt(starttime) + parseInt(replayinterval); | ||
| 140 | + } | ||
| 118 | 141 | ||
| 119 | - for (var i = 0; i < playbackrecord.length; i++) { | ||
| 120 | - if (playbackrecord[i].trigger === 1) { | ||
| 121 | - playTotalTime += parseInt(playbackrecord[i].intervaltime); | ||
| 122 | - }else if (playbackrecord[i].trigger === 0) { | ||
| 123 | - var timeoutcontroller = null; | ||
| 124 | - var replayinterval = playbackrecord[i].intervaltime; | ||
| 125 | - | ||
| 126 | - if (!CodingEditer.isPause) { | ||
| 127 | - starttime = replayinterval - (CodingEditer.audioTime - playTotalTime); | ||
| 128 | - CodingEditer.isPause = true; | ||
| 129 | - }else{ | ||
| 130 | - // if (i == 0) { | ||
| 131 | - // starttime = replayinterval; | ||
| 132 | - // }else{ | ||
| 133 | - // starttime = parseInt(starttime) + parseInt(replayinterval); | ||
| 134 | - // } | ||
| 135 | - starttime = parseInt(starttime) + parseInt(replayinterval); | 142 | + timeoutcontroller = setTimeout(changeValueCallback(playbackrecord[i]), starttime/CodingEditer.speed); |
| 143 | + CodingEditer.recordtimeoutcontrolls.push(timeoutcontroller); | ||
| 136 | } | 144 | } |
| 137 | - | ||
| 138 | - timeoutcontroller = setTimeout(changeValueCallback(playbackrecord[i]), starttime/CodingEditer.speed); | ||
| 139 | - CodingEditer.recordtimeoutcontrolls.push(timeoutcontroller); | ||
| 140 | } | 145 | } |
| 141 | } | 146 | } |
| 147 | + | ||
| 142 | console.log(CodingEditer.recordtimeoutcontrolls) | 148 | console.log(CodingEditer.recordtimeoutcontrolls) |
| 143 | }, | 149 | }, |
| 144 | pauseCode: function(){ | 150 | pauseCode: function(){ |
src/gxb-ide/Dir.js
| @@ -647,9 +647,9 @@ | @@ -647,9 +647,9 @@ | ||
| 647 | imagePath: '../js/audioPlayer/image', | 647 | imagePath: '../js/audioPlayer/image', |
| 648 | debuggers: false, | 648 | debuggers: false, |
| 649 | allowSeek: false, | 649 | allowSeek: false, |
| 650 | - playCallback: function() { // 播放 | 650 | + playCallback: function(e) { // 播放 |
| 651 | console.log('++++++++'); | 651 | console.log('++++++++'); |
| 652 | - CodingEditer.playCoding(); | 652 | + CodingEditer.playCoding(e); |
| 653 | }, | 653 | }, |
| 654 | pauseCallback: function() { // 暂停 | 654 | pauseCallback: function() { // 暂停 |
| 655 | CodingEditer.audioTime = parseInt(player.elements.audioDom.currentTime*1000); | 655 | CodingEditer.audioTime = parseInt(player.elements.audioDom.currentTime*1000); |
src/js/audioPlayer/jQuery.AudioPlayer.js
| @@ -319,13 +319,20 @@ | @@ -319,13 +319,20 @@ | ||
| 319 | // Set the playback / 设置播放 | 319 | // Set the playback / 设置播放 |
| 320 | ,play: function(o) { | 320 | ,play: function(o) { |
| 321 | var _this = this; | 321 | var _this = this; |
| 322 | - _this.elements.audioDom.play(); | ||
| 323 | - if (typeof o == 'function') { | ||
| 324 | - o({'status': _this.elements.audioDom.play}); | ||
| 325 | - } | 322 | + var canPlay = _this.elements.audioDom.play(); |
| 323 | + // 处理浏览器无法自动播放语音 | ||
| 324 | + if (canPlay !== undefined) { | ||
| 325 | + canPlay.then(_ => { | ||
| 326 | + if (typeof o == 'function') { | ||
| 327 | + o({'status': true}); | ||
| 328 | + } | ||
| 326 | 329 | ||
| 327 | - if(typeof _this.options.playCallback == 'function'){ | ||
| 328 | - _this.options.playCallback({'status': _this.elements.audioDom.play}); | 330 | + if(typeof _this.options.playCallback == 'function'){ |
| 331 | + _this.options.playCallback({'status': true}); | ||
| 332 | + } | ||
| 333 | + }).catch(error => { | ||
| 334 | + _this.options.playCallback({'status': false}); | ||
| 335 | + }); | ||
| 329 | } | 336 | } |
| 330 | } | 337 | } |
| 331 | // Set the suspend / 设置暂停 | 338 | // Set the suspend / 设置暂停 |