【发布时间】:2019-11-10 03:15:40
【问题描述】:
我在 JavaScript 中生成了一个 XML 字符串,我需要将它下载为一个文件。我尝试了here 中提供的两个答案。
这两个答案在 MacOS Safari、iOS Safari 和 Raspbian Chromium 上都可以正常工作,但是当我尝试在 iPad iOS 12.1.4 上的 PWA 中下载时,它什么也没做。控制台也没有错误。
如果我尝试在新标签中下载,它只会显示一个白屏并且没有任何反应。
编辑: 我做了一些涉及 iOS 13 的测试。
它似乎在 iOS 13 上运行,但即使是用于指定文件名的 html5 属性“下载”也有效。
我遇到了一个可能的错误;
使用 href 进行下载会弹出 iOS 共享菜单,但不会让您关闭它。要再次使用该应用,需要将其关闭。
使用 window.open() 可以关闭共享菜单,但不支持文件名。还有一个可能的错误?
无论如何,当我将 target='_blank' 添加到 href 时,它仍然不允许您选择关闭共享菜单。
编辑 2 我找到了 iOS 13 独立 PWA 的解决方法,以防上面 EDIT 中提到的错误无法修复:
function download(content)
{
var file = new Blob([content],
{
type: 'text/xml;charset=UTF-8'
});
var reader = new FileReader();
reader.onload = function()
{
var popup = window.open();
var link = document.createElement('a');
link.setAttribute('href', reader.result);
link.setAttribute('download', 'filename.xml');
popup.document.body.appendChild(link);
link.click();
}
reader.readAsDataURL(file);
}
【问题讨论】:
标签: javascript ios safari progressive-web-apps