【发布时间】:2013-11-26 21:09:26
【问题描述】:
给定 n 个不同的词:
var text = [ "bèijing Beijing Shanghai"]
var words= [ "bèijing", "Beijing", "Shanghai" ];
给定 n 个具有已知位置的不同 .ogg 音频文件:
<!-- AUDIOS FILES -->
<audio id="id1" src="/audio/Zh-bèijing.ogg"></audio>
<audio id="id2" src="/audio/Zh-Beijing.ogg"></audio>
<audio id="id3" src="/audio/Zh-Shanghai.ogg"></audio>
我使用 JS getElementById('...').play(),我在 HTML 元素上使用 onclick 事件运行它:
<!-- HTML -->
<div id="play" onClick="document.getElementById('id1').play();">
<button>Play</button>
</div>
这让我可以播放一个音频文件。
使用一个单独的 onlick 事件,如何播放第一个音频,然后在完成后链接到它播放第二个音频?
在那里开始摆弄资产:http://jsfiddle.net/J9wAB/
注意:我试过document.getElementById('id1').play().done(document.getElementById('id2').play()),但它同时播放两个文件。
编辑:我接受了一个在 Firefox 上工作的答案。然而,这个基于addEventListener 的答案在某些浏览器上失败了。替代的承诺基础答案可能会更成功。
【问题讨论】:
-
您的
play()方法调用真的返回一个promise(具有.done()方法)吗? -
堆栈溢出需要对此类问题有更新的答案。 JavaScript 至少到 ES6 2018,这是用 ES5 询问和回答的。
标签: javascript jquery audio text-to-speech promise