【问题标题】:How to download locally generated text in a PWA on iOS?如何在 iOS 上的 PWA 中下载本地生成的文本?
【发布时间】:2019-11-10 03:15:40
【问题描述】:

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

Answer 1

Answer 2

这两个答案在 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


    【解决方案1】:

    我找到了 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);
    }
    

    【讨论】:

      猜你喜欢
      • 2019-11-21
      • 1970-01-01
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 2015-09-06
      • 2015-10-23
      • 2022-11-20
      • 2017-12-27
      相关资源
      最近更新 更多