XHR responseType =' arraybuffer'在Firefox中不起作用

时间:2014-12-27 11:00:51

标签: javascript error-handling xmlhttprequest arraybuffer

    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();
}

我的应用程序有一个函数来发送一个XMLHttpRequest,其responseType是' arraybuffer'。 在Chrome,Safari上使用时没有错误,但是Firefox会给我一个错误' InvalidStateError:尝试使用不可用或不再可用的对象。

许多教程似乎都有相似的代码。 怎么可以解决? 一个注意事项是“aUrl'不是本地路径。 ex)" https://api.soundcloud.com/tracks/121818867/stream?client_id=8f474de4d1dedd5a6a4f4cbb60f4e6b8"

0 个答案:

没有答案