如何在iOS上的PWA中下载本地生成的文本?

时间:2019-06-28 06:53:47

标签: javascript ios safari progressive-web-apps

我在JavaScript中生成了XML字符串,我需要将其下载为文件。我尝试了here中提供的两个答案。

Answer 1

Answer 2

两个答案在MacOS Safari,iOS Safari和Raspbian Chromium上都可以很好地工作,但是当我尝试在iPad iOS 12.1.4上的PWA中下载时,它什么也没做。控制台也没有错误。

如果我尝试在新标签页中下载,它只会显示白屏,什么也没发生。

编辑: 我已经完成了一些有关iOS 13的测试。

它似乎可以在iOS 13上运行,但即使是指定文件名的html5 attrbute“下载”也可以。

虽然我遇到了一个可能的错误;

使用href进行下载会弹出iOS共享菜单,但不允许您关闭它。为了再次使用该应用,需要将其关闭。

使用window.open()可以关闭共享菜单,但不支持文件名。还有可能的错误吗?

无论如何,当我将target ='_ blank'添加到href中时,它仍然不能让您提供关闭共享菜单的选项。

1 个答案:

答案 0 :(得分:0)

如果无法解决上面EDIT中提到的错误,我来到了iOS 13独立PWA的变通方法:

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