Не скачивается PDF в сафари через JS

Использую следующее решение , в нормальных браузерах таких как хром, фаерфокс , опера. Но сафари просто открывает в новом окне pdf

function SaveToDisk(fileURL, fileName) {
  // for non-IE
  if (!window.ActiveXObject) {
    var save = document.createElement('a');
    save.href = fileURL;
    save.target = '_blank';
    save.download = fileName || 'unknown';

    var evt = new MouseEvent('click', {
      'view': window,
      'bubbles': true,
      'cancelable': false
    });
    save.dispatchEvent(evt);

    (window.URL || window.webkitURL).revokeObjectURL(save.href);
  }

  // for IE < 11
  else if ( !! window.ActiveXObject && document.execCommand)     {
    var _window = window.open(fileURL, '_blank');
    _window.document.close();
    _window.document.execCommand('SaveAs', true, fileName || fileURL)
    _window.close();
  }
}
SaveToDisk(pdf,"presentation")

Ответы (1 шт):

Автор решения: Rudi

У меня нет возможности проверить данный код в сафари, но это работало для меня во всех других браузерах которые я тестировал, на данный момент ссылки на скачивание просто обернуты в тэг <a href="http://192.168.1.227:80/0.dae">Downlaod .dae</a>

и я не испытываю проблем с этим. У меня файлы отдаёт Nginx. Возможно у вас получится адаптировать этот код под свои нужды.

function downloads(url) {
    let link_url = document.createElement("a"); 
    link_url.download = url.substring((url.lastIndexOf("/") + 1), url.length);// file name 0.pdf
    link_url.href = url;
    document.body.appendChild(link_url);
    link_url.click();
    document.body.removeChild(link_url);
    delete link_url;
}
downloads("http://192.168.1.227:80/0.pdf")

function downloads_(url, filename) {
    let link_url = document.createElement("a"); 
    link_url.download = filename
    link_url.href = url;
    document.body.appendChild(link_url);
    link_url.click();
    document.body.removeChild(link_url);
    delete link_url;
}
downloads_("http://192.168.1.227:80/", "0.pdf")
→ Ссылка