gpt4 book ai didi

javascript - 使用 iframe 下载文件

转载 作者:行者123 更新时间:2023-12-03 08:48:10 25 4
gpt4 key购买 nike

目前,我正在使用 POST 形式下载文件:

var form = document.createElement("form");
var element1 = document.createElement("input");
var element2 = document.createElement("input");

form.target = "_blank";
form.method = "POST";
form.action = path;

element1.value = authService.getToken();
element1.name = "Authorization";
form.appendChild(element1);

element.append(form);

form.submit();
element.empty();

为了防止当服务器不发送正确的 header 时当前页面的位置发生变化,我打开将表单的目标设置为“_blank”,这样如果发生错误,它就会显示在其他页面上。但这里的问题是浏览器默认阻止新选项卡,我不想强​​迫用户允许这种行为。我读过,还有一个选项可以指定 iframe 的 id 作为目标。它适用于我的情况吗?然后我如何从 iframe 读取错误并向用户显示?

最佳答案

我现在正在解决这个问题。我发现从 iframe 返回状态的最佳答案是在其中设置 cookie。理想情况下,cookie 的名称对于特定下载事件(我使用的是 guid)应该是唯一的,两个页面都知道,并且它的值可以是错误消息,也可以为空(表示成功)。然后父页面在 JavaScript 中轮询此 cookie。我确保如果出现错误,下载 URL 始终会呈现 cookie,因为很难了解有关 iframe 状态的任何其他信息。成功时,JS 轮询器可以隐藏“您的下载即将开始”消息,并删除 cookie。失败时,执行这些操作并显示错误。

最大的悬而未决的问题是它在移动浏览器中的工作效果如何。弹出窗口对它们来说是一个糟糕的选择,因为它们大多默认会在没有提示的情况下阻止它们……但是尽管如此,还是有一个用于 iframe 下载的 jQuery 插件,当它看到移动设备时,就会退回到弹出窗口。这让我害怕。

关于javascript - 使用 iframe 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32793743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com