Использование 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);
    });

Ссылки:

  1. Открытые ссылки, созданные createObjectURL в IE11

  2. URL-адрес blob-объекта в Internet Explorer с angularjs

Другие вопросы по тегам