¿Cómo mostrar el diálogo de guardar archivo en Safari?

Necesito ayuda. Tengo una aplicación angular y al usar DocRaptor quiero generar PDF y guardarlo como archivo. Pero no puedo activar el cuadro de diálogo para guardar el archivo en Safari con ningún método que haya encontrado en Stack Overflow. Esos métodos abren el archivo en la pestaña actual del navegador y reemplazan el sitio html o abren el archivo en una pestaña nueva. Nadie puede mostrar el diálogo. Aquí los ejemplos de lo que ya he tratado de usar. Entorno MacOS - EL Capitan. Safari 9.0.3

Solución # 1

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

Ejemplojsfiddle. Muestra el archivo en la pestaña actual. Reemplaza el sitio. Pero funciona en Chrome.

Solución # 2

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

Ejemplojsfiddle. No funciona en absoluto en Safari. Funciona en cromo.

Solución # 3

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

y

$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();
        };

EjemploFragmento de código. Muestra el contenido del archivo en lugar del html del documento.

Solución # 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;
}

EjemploFragmento de código. Reemplazar documento con contenido de archivo en Safari. Funciona en cromo.

Y similarSolución # 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();
}

Ejemplojsfiddle. No funciona en absoluto en Safari. Funciona en cromo.

También he tratado de usar bibliotecas como:FileSaver - Abre un archivo en Safari en lugar de un documento. Por lo tanto, debe hacer clic en Cmd + S.Ejemplo. Si usamos el tipo 'pplication / octet-stream', el nombre del archivo será desconocido o hubo un error 'Error al cargar el recurso: carga de trama interrumpida'.Problema.

Segunda bibliotecaDownloadify - no funciona en Safari en absoluto.Problema.

Biblioteca angularnw-fileDialog - en lugar de guardar como muestra elegir archivo.Problema.

DocRaptor tiene propioejemplo con jQuery. Ejemplo con angular enjsfiddle. Funciona en Chrome, pero en el ejemplo de Safari no funciona por error con SAMEORIGIN

Se negó a mostrar 'https://docraptor.com/docs'en un marco porque establece' X-Frame-Options 'en' SAMEORIGIN '.

Pero si lo reproducimos en el servidor y cambiamos la URL en 'https://docraptor.com/docs.pdf'funciona y abre el archivo en una nueva pestaña y descarga automáticamente el archivo para que no pueda elegir una carpeta y después de descargar el usuario vea la pestaña blanca de la pantalla vacía en el navegador. Si especificamos form target = "_ self", funcionará perfecto, pero la consola tendrá un error 'Error al cargar el recurso:'.

Agradeceré cualquier ayuda con este problema. Gracias. Saludos.

Respuestas a la pregunta(2)

Su respuesta a la pregunta