Я пытаюсь передать большое количество двоичных данных в JavaScript, получая доступ к данным до завершения загрузки. В большинстве основных браузеров я могу использовать трюк charset=x-user-defined
, чтобы вручную получать необработанные байтовые данные во время события прогресса.
Однако в Internet Explorer этот трюк не работает, и вместо этого мне остается использовать метод VBArray(responseBody).toArray()
, что очень медленно. Однако, поскольку мне нужно только поддерживать IE 11 и более поздние версии, я должен иметь возможность использовать IE MSStream
для постепенного получения данных. Следующий код отлично работает на рабочем столе IE 11, но не на устройстве Lumia Windows Phone 8.1, на котором работает IE 11 mobile:
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'ms-stream';
xhr.onreadystatechange = function () {
if (xhr.readyState === 3 && xhr.status === 200) {
// reader is an MSStreamReader object
reader.readAsArrayBuffer(xhr.response);
}
};
xhr.send();
На устройстве Windows Phone readyState
никогда не проходит 1, а status
равно 0, что указывает на неизвестную ошибку, даже если никакая ошибка не возникает.
Кто-нибудь может понять, почему это не работает для меня или, возможно, решение проблемы?