使用Safari下载数据URL



我们正在开发一个应用程序,我们需要下载在客户端生成的PDF文件。我们使用字符串将文件的内容提供给数据URL,如下所示:

const pdfContent = 'xxxxx';
const element = document.createElement('a');
element.setAttribute('href', `data:application/pdf;charset=utf-8,${encodeURIComponent(pdfContent)}`);
element.setAttribute('download', 'mypdf.pdf');
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);

这在Microsoft Edge中工作得很好,但在Safari中会出现错误,说"不允许将顶部框架导航到数据URL"。

主机应用程序不允许window.open()或任何这样的技巧,我尝试使用iframe,但它不会工作,也许我做错了。我也尝试了其他的库,比如file-saver, save-file,这些都是npm上可用的,结果都是一样的,无法从top frame导航到data url。

提示吗?谢谢。

我最终使用了blob流,它部分有效,因为我仍然无法下载,因为它运行在沙盒环境(Office插件)上。我想我们将不得不求助于打开浏览器窗口并在那里下载文件,除非有人有更好的Office插件替代方案。

最新更新