Javascript 取消音频淡出,然后淡入-Web音频API

Javascript 取消音频淡出,然后淡入-Web音频API,javascript,html5-audio,web-audio-api,Javascript,Html5 Audio,Web Audio Api,我想开始淡出,但可以取消,并从当前音量级别淡入 首先,我尝试了这个: gainNode.gain.exponentialRampToValueAtTime(0.001, audioCtx.currentTime + 5); setTimeout(function(){ gainNode.gain.cancelScheduledValues(audioCtx.currentTime); gainNode.gain.exponentialRampToValueAtTime(1, au

我想开始淡出,但可以取消,并从当前音量级别淡入

首先,我尝试了这个:

gainNode.gain.exponentialRampToValueAtTime(0.001, audioCtx.currentTime + 5);
setTimeout(function(){
    gainNode.gain.cancelScheduledValues(audioCtx.currentTime);
    gainNode.gain.exponentialRampToValueAtTime(1, audioCtx.currentTime + 5);
}, 3000);

这在Firefox或Chrome中都不起作用。淡出开始,然后当超时函数启动时,增益值刚好跳回到1

然后我发现这一款在Chrome中有效:

gainNode.gain.exponentialRampToValueAtTime(0.001, audioCtx.currentTime + 5);
setTimeout(function(){
  const val = gainNode.gain.value;
  gainNode.gain.cancelScheduledValues(audioCtx.currentTime);
  gainNode.gain.setValueAtTime(val, audioCtx.currentTime);
  gainNode.gain.exponentialRampToValueAtTime(1, audioCtx.currentTime + 5);
}, 3000);

…但不是在Firefox中,因为它返回增益的最后一个设置值,而不是计算值,即1,所以它从1转换为1,因此结果与我第一次尝试时的结果相同

所以这些留给我的问题

我上一个解决方案规范是兼容的还是只是一个Chrome bug? 是否有一个跨浏览器的Firefox+Chrome解决方案来解决这个问题? 对于规范兼容的问题,是否有跨浏览器的解决方案?
我想你想取消并等一下。不幸的是,它还没有在Firefox中实现