按钮onclick后未调用Web Audio ScriptNode

时间:2015-10-05 18:40:34

标签: javascript audio web onclick

(Windows 7/64,FireFox 41.0.1)我有一个网络音频网络,它由连接到脚本节点的(实时麦克风)源组成,连接到目的地。如果我包含一个没有“onclick”脚本的按钮元素,则脚本节点(只执行“console.log”)将继续运行。如果我包含onclick脚本,则在执行脚本后,即使onclick脚本只是向控制台发送消息,脚本节点也不会再次被调用。如果没有onclick脚本,它可以工作;如果按钮调用onclick脚本,则不再调用脚本节点。以下是没有onclick脚本的FireBug控制台:

编辑:如果我在有一个onclick脚本时单击该按钮,则来自scriptNode的消息将停止。但是,如果我然后在scriptNode中放置一个断点,则会触发断点,表明调用了scriptNode。如果我然后删除断点并告诉FireBug继续,则脚本节点将继续显示其消息,直到我再次按下该按钮。

以下是没有onclick脚本的输出:     144 scriptNode.onaudioprocess bug.html(第35行) (伯爵继续增长)

以下是带有onclick脚本的输出:

df[c('test', 'value')] <- t(apply(df, 1, function(x) {
             i1 <- which(x[1:5]>x[6])[1]
              c(i1, x[i1])}))

(没有进一步的输出)

这是整个代码。谁能告诉我哪里出错了?

36 scriptNode.onaudioprocess bug.html (line 35)
hello bug.html (line 62)

1 个答案:

答案 0 :(得分:0)

至少使用这个版本的Firefox,调用“onclick”脚本会导致某些将AudioContext状态更改为“暂停”,从而停止任何进一步的音频处理。设置断点,等待中断,然后继续执行,导致AudioContext状态恢复为“正在运行”,音频处理将恢复。为了我的目的,我现在包括这个功能

audioContext.onstatechange = function() {
    if (audioContext.state === "suspended") {
    audioContext.resume();
    }
}

这个黑客似乎解决了我的问题。希望它也可以帮助别人。