gpt4 book ai didi

javascript - 在隐藏的 iframe : Android equivalent in Comet context? 中下载文件

转载 作者:行者123 更新时间:2023-11-30 06:34:16 24 4
gpt4 key购买 nike

我目前正在使用以下 JS 代码在不离开当前页面的情况下触发文件下载:

var iframe = document.createElement('iframe');
iframe.style.display = 'none';
document.body.appendChild(iframe);
iframe.src = "/somefile.zip";

它几乎在我测试的任何地方都运行良好,除了在普通的 Android 浏览器和 Dolphin 上,下载根本不会开始。到目前为止一切顺利,经过一些研究后发现这个隐藏的 iframe 技巧恰好不适用于 Android 浏览器。

但我尝试了其他几种方法来触发 Android 浏览器上的下载,包括 window.open() (不可靠,因为默认情况下启用弹出窗口阻止),或 <a target="_blank">用模拟 click() (从弹出窗口拦截器的 Angular 来看相当于 window.open() 并被阻止),或 document.location = ...它下载了文件但破坏了我的应用程序。

后者的问题document.location = ...这是一个 Comet 应用程序(服务器推送/长轮询)所以我真的不能离开我当前所在的页面(并且“离开”包括更改 document.location 即使是文件下载,即使显然浏览器停留在当前页面)否则长轮询连接停止并且更新停止,应用程序中断。这显然也适用于手动或模拟单击普通链接。

因此,为了不破坏我的应用程序,我确实需要在离开我所在页面的情况下触发文件下载。遗憾的是,我没有找到任何适用于现有 Android 浏览器的可行解决方案。

有什么想法吗?

感谢阅读我的内容。

最佳答案

尝试在不使用 target=blank 的情况下使用 anchor 和模拟点击

我这样说是因为我有一个类似的下载,其中包含一个 iframe 和一个简单的链接作为后备。 iframe 可以在除 android 之外的所有设备上运行,但是简单的链接可以在不离开页面的情况下成功下载。

关于javascript - 在隐藏的 iframe : Android equivalent in Comet context? 中下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15592867/

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