我使用的是Web Audio API,出于不同的原因,我必须创建多个音频上下文。这不是Firefox或Edge的问题,但Chrome不允许超过6个上下文。由于当代上下文的数量为3(其他内容使用close()关闭)可能仍会计算Chrome中的某些引用。 有没有办法知道有多少音频上下文与DOM元素相关联?
答案 0 :(得分:0)
创建包装函数 -
function createAudioContext () {
if ( createAudioContext.count++ >= 6 ) throw new Error('uh oh')
return new AudioContext();
}
createAudioContext.count = 0;
并使用它代替new AudioContext()
答案 1 :(得分:0)
更新到更新版本的Chrome。该限制已被删除。
答案 2 :(得分:0)
我似乎注意到2020年Chrome的限制,因此我可能会考虑以下内容。
类属性
audioContextCount = 6;
audioContexts = new Array<AudioContext>();
在初始化时创建上下文
for (let i = 0; i < this.audioContextCount; i++) {
let context = new AudioContext();
this.audioContexts.push(context);
}
使用前的旋转背景
let context = this.audioContexts.shift();
this.audioContexts.push(context);
一种改进可能是先检查支持的上下文的数量,然后以它为基础,但是上面概述了这个想法。