Как показать диалог сохранения файла в Safari?

Мне нужна помощь. У меня есть угловое приложение и с помощью DocRaptor хочу создать PDF и сохранить его в виде файла. Но я не могу вызвать диалоговое окно для сохранения файла в Safari любым способом, который я нашел в переполнении стека. Эти методы открывают файл в текущей вкладке браузера и заменяют сайт HTML или открывают файл в новой вкладке. Никто не может показать диалог. Вот примеры, которые я уже пытался использовать. Среда MacOS - EL Capitan. Safari 9.0.3

Решение # 1

var content = 'file content for example';
var blob = new Blob([ content ], { type : 'text/plain' });
$scope.url = (window.URL || window.webkitURL).createObjectURL( blob );

примерjsfiddle, Показывает файл в текущей вкладке. Заменяет сайт. Но работает в Chrome.

Решение # 2

<a target="_self" href="mysite.com/uploads/ahlem.pdf" download="foo.pdf">

примерjsfiddle, В Safari не работает вообще. Работает в Chrome.

Решение # 3

<a class="btn" ng-click="saveJSON()" ng-href="{{ url }}">Export to JSON</a>

а также

$scope.saveJSON = function () {
            $scope.toJSON = '';
            $scope.toJSON = angular.toJson($scope.data);
            var blob = new Blob([$scope.toJSON], { type:"application/json;charset=utf-8;" });           
            var downloadLink = angular.element('<a></a>');
                        downloadLink.attr('href',window.URL.createObjectURL(blob));
                        downloadLink.attr('download', 'fileName.json');
            downloadLink[0].click();
        };

примерФрагмент кода, Показывает содержимое файла вместо html документа.

Решение # 4

function download(text, name, type) {
  var a = document.getElementById("a");
  var file = new Blob([text], {type: type});
  a.href = URL.createObjectURL(file);
  a.download = name;
}

примерФрагмент кода, Замените документ содержимым файла в Safari. Работает в Chrome.

И аналогичныеРешение # 5

function download(text, name, type) {
    var a = document.createElement("a");
    var file = new Blob([text], {type: type});
    a.href = URL.createObjectURL(file);
    a.download = name;
    a.click();
}

примерjsfiddle, В Safari не работает вообще. Работает в Chrome.

Также я попытался использовать библиотеки, такие как:FileSaver - Он открывает файл в Safari вместо документа. Поэтому вы должны нажать Cmd + S.пример, Если мы используем тип «pplication / octet-stream», имя файла будет неизвестно или возникла ошибка «Не удалось загрузить ресурс: загрузка кадра прервана».вопрос.

Вторая библиотекаDownloadify - не работает в Safari вообще.вопрос.

Угловая библиотекаNW-FileDialog - вместо сохранения, как показано, выберите файл.вопрос.

ДокРаптор имеет собственныйпример с помощью jQuery. Пример с угловым вjsfiddle, Он работает в Chrome, но в примере Safari не работает из-за ошибки с SAMEORIGIN

Отказался отображатьhttps://docraptor.com/docs'в кадре, потому что он установил' X-Frame-Options 'на' SAMEORIGIN '.

Но если мы воспроизведем его на сервере и изменим URL на 'https://docraptor.com/docs.pdfОн работает и открывает файл в новой вкладке и автоматически загружает файл, поэтому вы не можете выбрать папку и после загрузки пользователь видит белую пустую вкладку экрана в браузере. Если мы укажем форму target = "_ self", она будет работать идеально, но у консоли будет ошибка "Не удалось загрузить ресурс:".

Я буду признателен за любую помощь с этой проблемой. Благодарю. С уважением.

Ответы на вопрос(2)

Ваш ответ на вопрос