Использование URL.createObjectURL в Web Worker в IE11 - PullRequest
0 голосов
/ 04 мая 2020

Мне приходится обрабатывать большие наборы данных простым текстом. Я получаю эти данные через облако в виде нескольких блоков и использую веб-работника для обработки и форматирования данных. В конце я хочу загрузить его в локальное хранилище пользователя. Поэтому я использую 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 Ответ

0 голосов
/ 06 мая 2020

Я проверяю проблему и провожу некоторые исследования по ней.

Я обнаружил, что BLOB-URL не работают в браузере 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-объекта в проводнике inte rnet с angularjs

...