XHR responseType = 'arraybuffer' не работает в Firefox

    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, тип ответа которого — «arraybuffer». Нет ошибки при использовании в Chrome, Safari, однако Firefox выдает мне ошибку «InvalidStateError: была предпринята попытка использовать объект, который не является или больше не может использоваться».

Многие учебники, кажется, имеют очень похожий код. Как это можно решить? Одно примечание: аргумент «aUrl» не является локальным путем. пример) "https://api.soundcloud.com/tracks/121818867/stream?client_id=8f474de4d1dedd5a6a4f4cbb60f4e6b8"


person Yuma Yanagisawa    schedule 27.12.2014    source источник
comment
решено. ссылка   -  person Yuma Yanagisawa    schedule 27.12.2014
comment
Вы можете ответить на свой вопрос и заработать больше баллов. Спасибо за это!   -  person Niloct    schedule 09.02.2015
comment
Вот англоязычное решение. По сути, xhr.open() должен быть помещен перед xhr.responseType в коде - в настоящее время это влияет только на Firefox; Хром или Опера работают нормально.   -  person spaffy    schedule 25.02.2015