Javascript Web音频API错误:未能设置';价值';在'上的属性;AudioParam';:提供的浮点值是非有限的

Javascript Web音频API错误:未能设置';价值';在'上的属性;AudioParam';:提供的浮点值是非有限的,javascript,web-audio-api,Javascript,Web Audio Api,我不知道这意味着什么。我感觉Web Audio API最近发生了一些变化,浏览器也实现了这种变化,因为我的应用程序在上一次检查时运行良好,没有出现错误,大约两周前。自从上次代码运行以来,我没有对代码进行任何更改 我得到的错误是: 未捕获的TypeError:未能在上设置“value”属性 “AudioParam”:提供的浮点值是非有限的 发生错误的行是这一行: gainNode.gain.value = volume; 可在此处查看应用程序: 当按下电源按钮时,应用程序应打开,无线电台应开始

我不知道这意味着什么。我感觉Web Audio API最近发生了一些变化,浏览器也实现了这种变化,因为我的应用程序在上一次检查时运行良好,没有出现错误,大约两周前。自从上次代码运行以来,我没有对代码进行任何更改

我得到的错误是:

未捕获的TypeError:未能在上设置“value”属性 “AudioParam”:提供的浮点值是非有限的

发生错误的行是这一行:

gainNode.gain.value = volume;
可在此处查看应用程序:

当按下电源按钮时,应用程序应打开,无线电台应开始播放流媒体(仅在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;
然后在通电功能中,我有:

gainNode.gain.value = currVolume;
这是导致错误的原因

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

在我的桌面电脑上,我的Chrome版本是42.0.2311.90(64位),它不工作


在我的笔记本电脑上,我有Chrome版本41.0.2272.118 m,而且它可以运行


在我的iPhone上,我有Chrome版本40.0.2214.73,它确实可以运行。

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

这是因为浮点值的类型可以是无限和非无限,所以为了防止此错误,请检查解析的浮点值是否为无限

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

功能更改卷(卷){
让体积=parseFloat(参数体积);
if(有限(体积)){
gainNode.gain.value=体积;
}

}
音量的价值是什么?这没有直接关系,但我们在最新的Chrome版本中发现了另一个之前没有的音频API错误。这是在一些清理代码中,所以我们可以解决它,但是最近相关的实现中似乎有一些变化。无法具体帮助解决此问题。我正在使用版本42.0.2311.90(64位)。它说它是最新的。我的iPhone上的Chrome版本是40.0.2214.73,它可以正常工作。我的笔记本电脑上的Chrome版本是41.0.2272.118 m,它可以正常工作。你说得对。原来是这样。我现在没有得到错误。。。然而,我在Chrome中也没有听到任何声音。不过,它在Safari中确实有效。这是CORS访问问题。您试图将MediaElementAudioSource与您无权访问的音频源一起使用。发生这种情况时,Chrome Canary将向控制台打印一条消息。