Javascript XHR responseType=';arraybuffer';在Firefox中不起作用
我的应用程序具有发送XMLHttpRequest的功能,其响应类型为“arraybuffer”。 在Chrome、Safari上使用时没有错误,但是Firefox给了我一个错误“InvalidStateError:试图使用不可用或不再可用的对象” 许多教程似乎都有类似的代码。 怎么解决呢?? 需要注意的是,参数“aUrl”不是本地路径。Javascript XHR responseType=';arraybuffer';在Firefox中不起作用,javascript,error-handling,xmlhttprequest,arraybuffer,Javascript,Error Handling,Xmlhttprequest,Arraybuffer,我的应用程序具有发送XMLHttpRequest的功能,其响应类型为“arraybuffer”。 在Chrome、Safari上使用时没有错误,但是Firefox给了我一个错误“InvalidStateError:试图使用不可用或不再可用的对象” 许多教程似乎都有类似的代码。 怎么解决呢?? 需要注意的是,参数“aUrl”不是本地路径。 ex)“已解决。您可以回答自己的问题并获得更多积分。谢谢你!这是英语。基本上,xhr.open()必须放在代码中的xhr.responseType之前-这目前只
ex)“已解决。您可以回答自己的问题并获得更多积分。谢谢你!这是英语。基本上,
xhr.open()
必须放在代码中的xhr.responseType
之前-这目前只影响Firefox;Chrome或Opera很好用。
function getAudio(aUrl) {
var deferred = $.Deferred();
// ajax is not capable of arraybuffer
var xhr = new XMLHttpRequest();
xhr.responseType = 'arraybuffer';
xhr.open('GET', aUrl, true);
// request succeeded
xhr.onreadystatechange = function() {
if (
(xhr.readyState === 4) &&
(xhr.status === 200) &&
(xhr.status !== 404)
) {
audioCtx.decodeAudioData(xhr.response, function(buffer) {
buf = buffer;
return deferred.resolve(true);
});
}
};
xhr.onerror = function() {
return deferred.resolve(false);
};
xhr.send();
return deferred.promise();
}