атрибут загрузки href не работает в последней версии safari 12.1 13607.1.40.1.5 - PullRequest
0 голосов
/ 27 марта 2019

Я настраиваю новое веб-приложение для загрузки XML-файла и хочу предоставить ссылку для загрузки XML-файла на стороне клиента с помощью Javascript.

Согласно caniuse.com (https://caniuse.com/#search=download), Safari> 10.1 поддерживает атрибут загрузки. К сожалению, это не работает в случае Safari по сравнению с другими браузерами, такими как Chrome, Firefox. В основном после нажатия на элемент href переходит на следующий экран и загрузка не происходит.

Для этой цели я написал следующий скрипт href.

         var link = document.createElement("a");
         link.download = filename;
         link.target = "_blank";

         // Construct the URI
         link.href = DOWNLOAD_URL;
         document.body.appendChild(link);
         link.click();

         // Cleanup the DOM
         document.body.removeChild(link); 

Чтобы заставить это работать для того, что я сделал, добавили тайм-аут на событие щелчка, как показано в коде ниже, и он начал работать. Пожалуйста, проверьте -

        var link = document.createElement("a");
        link.download = filename;

        link.target = "_blank";
        // Construct the URI
        link.href = DOWNLOAD_URL;
        document.body.appendChild(link);

        setTimeout(function() {
            link.click();

            // Cleanup the DOM
            document.body.removeChild(link);
            DOWNLOAD_COMPLETED = true;
            document.getElementById('nextButton').onclick();

        }, 500);

Что я хочу понять, почему сафари ведет себя иначе, чем в других браузерах. Похоже, что внутренняя реализация атрибута загрузки в Safari в некоторой степени асинхронна

Я делаю ошибку в моем сценарии загрузки? Вы можете мне помочь? Большое спасибо!

...