Javascript 如何在第二次播放时停止Safari剪辑部分时间的音频

Javascript 如何在第二次播放时停止Safari剪辑部分时间的音频,javascript,html,audio,Javascript,Html,Audio,因此,当您使用javascript触发音频时。在最新版本的safari中,如果使用obj.play()两次,第二次,音频部分将被切断(至少在mac上)。这个问题在Chrome中不会发生。只在狩猎中 有人知道这方面的解决办法吗 <a href="javascript:playWord()">Play</a> <audio id="t" src="https://biblicaltext.com/audio/%e1%bc

因此,当您使用javascript触发音频时。在最新版本的safari中,如果使用
obj.play()
两次,第二次,音频部分将被切断(至少在mac上)。这个问题在Chrome中不会发生。只在狩猎中

有人知道这方面的解决办法吗

<a href="javascript:playWord()">Play</a>
<audio id="t" src="https://biblicaltext.com/audio/%e1%bc%a4.mp3"></audio>
<script>
function playWord(word) {
    a = document.getElementById('t');
    //a.currentTime = 0
    a.play();
    //a.src = a.src
}
</script>


使用
a.src=a.src
重新下载文件是可行的,但这并不理想。

这听起来像是一个错误

目前,如果您有权访问以相同来源方式播放的文件,则可以使用及其界面以比通过HTMLMedia元素更高的精度和更少的延迟播放媒体:

(异步()=>{
const ctx=new(window.AudioContext | | window.webkitadiocontext)();
//使用不同的文件,因为biblicaltext.com
//不允许跨源请求
const data_buf=等待获取(“https://dl.dropboxusercontent.com/s/agepbh2agnduknz/camera.mp3")
.然后(resp=>resp.arrayBuffer());
const audio_buf=等待ctx解码音频数据(data_buf);
document.querySelector(“a”).onclick=(evt)=>{
evt.preventDefault();
const source=ctx.createBufferSource();
source.buffer=audio\u buf;
source.connect(ctx.destination);
source.start(0);
}
})();


该文件是否由biblicaltext.com托管,或者您是否可以将其托管在同一来源处?或者代码会从biblicaltext.com来源运行?@Kaido我选择链接到确切的原始文件,以防它有什么影响。(我不确定)。要明确的是,代码来自同一来源的网站。哇,谢谢!我不知道Web音频API(我不是Javascript专家),但这看起来很有希望。它似乎根本没有I.E.支持,但可能会进行回退。我现在正在测试这个。