Использование URL.createObjectURL в Web Worker в IE11
Мне приходится обрабатывать большие наборы данных с простым текстом. Я получаю эти данные через облако в виде нескольких блоков и использую веб-воркера для обработки и форматирования данных. В конце концов, я хочу загрузить его в локальное хранилище пользователя. Поэтому я использую Blobs и saveAs(), определенные в FileSaver.js, чтобы обеспечить совместимость между браузерами. Я хочу отправить ссылку на окончательные данные через URL.createObjectURL и передать DOMString URL-адреса обратно в мой основной поток. Это очень хорошо работает в Chrome или Edge, но IE11 создает некоторые проблемы. Если я console.log полученный URL-адрес, Chrome и Edge дадут мне следующий результат:
blob:"reference to website"/"XXXX-XXXXX-XXXXX-XXXX"
Но если я сделаю то же самое в IE11, я получу следующий результат:
blob:"XXXX-XXXXX-XXXXX-XXXX"
Вот пример кода: https://jsfiddle.net/BoesingaGit/Lvx20uj8/6/ Я не использую здесь веб-воркера, потому что проблема существует и без него. К сожалению, функция saveAs не работает в JSFiddle, но работает с моим обычным кодом. В Chrome загрузка URL-адреса будет работать, но не в IE. Если вы посмотрите на консоль, вы увидите, что URL-адрес отличается в Chrome и IE. Я предполагаю, что это приводит к неудачной загрузке в IE. Есть ли причина, по которой в IE нет ссылки на мой сайт?
Спасибо.
1 ответ
Я проверяю проблему и исследую ее.
Я обнаружил, что URL-адреса BLOB не работают в браузере IE по соображениям безопасности.
Чтобы обойти проблему, вы можете попробовать использовать метод msSaveOrOpenBlob()
Пример кода:
var str = "Hello World";
blobObject = new Blob([str], {type: "plain/text"});
$(button).click(function(){
window.navigator.msSaveOrOpenBlob(blobObject, filename);
});
Ссылки: