Javascript Web Audio API错误:无法在'AudioParam'上设置'value'属性:提供的float值是非限定的

时间:2015-04-27 18:43:42

标签: javascript web-audio

我不知道这意味着什么。我有一种感觉Web Audio API最近发生了变化,并且浏览器实现了更改,因为我的应用程序工作正常,上次我在2周前检查时没有错误。自上次工作以来,我最近没有更改任何代码。

我得到的错误是:

  

未捕获的TypeError:无法设置'value'属性   'AudioParam':提供的浮点值是非限定的。

发生错误的行是这一行:

gainNode.gain.value = volume;

可在此处查看该应用程序: http://aceroinc.ca/harmanKardon/

当按下电源按钮时,应用程序应该打开,并且无线电台应该开始流式传输。 (仅在Chrome中... .aac格式在Firefox中不起作用,我知道这一点)

我在DOM加载后初始化web音频api ......

window.AudioContext = window.AudioContext || window.webkitAudioContext;
context = new AudioContext();
source =context.createMediaElementSource(document.getElementById('audio'));
gainNode = context.createGain();
var gainDefault = gainNode.gain.defaultValue;

然后在我所拥有的powerOn功能内部:

gainNode.gain.value = currVolume;

导致错误。

当我在iphone上的safari中检查时,应用程序正常运行。所以这似乎是一个问题。

在我的桌面计算机上,我有Chrome版 42.0.2311.90 (64位),但它不起作用。

在我的笔记本电脑上,我的Chrome版本 41.0.2272.118米 工作。

在我的iPhone上,我有Chrome版 40.0.2214.73 工作。

2 个答案:

答案 0 :(得分:1)

“音量”是包含音量旋钮的DIV元素,而不是值。我认为你的意思是“currVolume”。

答案 1 :(得分:1)

因为Float值可以是无限类型和非无限类型,所以为了防止出现这个错误,请检查解析后的float值是否为Infinite。

有关parseFloat()的更多详细信息,请阅读parseFloat()

function changeVolume(volume) {

  let volume = parseFloat(params.volume);

  if (isFinite(volume)) {
    gainNode.gain.value = volume;
  }

}