Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在iOS上下载PWA中本地生成的文本?_Javascript_Ios_Safari_Progressive Web Apps - Fatal编程技术网

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

Javascript 如何在iOS上下载PWA中本地生成的文本?,javascript,ios,safari,progressive-web-apps,Javascript,Ios,Safari,Progressive Web Apps,我用JavaScript生成了一个XML字符串,需要将其作为文件下载。我尝试了中提供的两个答案 这两个答案在MacOS Safari、iOS Safari和Raspbian Chromium上都能很好地工作,但当我尝试在iPad iOS 12.1.4上的PWA中下载时,它什么也没做。控制台中也没有错误 如果我尝试在一个新的标签中下载,它只会显示一个白色的屏幕,什么也不会发生 编辑: 我做了一些涉及iOS 13的测试 它似乎在iOS 13上工作,但即使是html5属性“下载”来指定文件名也能工

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

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

如果我尝试在一个新的标签中下载,它只会显示一个白色的屏幕,什么也不会发生

编辑: 我做了一些涉及iOS 13的测试

它似乎在iOS 13上工作,但即使是html5属性“下载”来指定文件名也能工作

但是我遇到了一个可能的错误

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

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

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

编辑2 我想到了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);
}
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);
}

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