gpt4 book ai didi

javascript - 启动一个运行良好的文件下载,即使在 IE 中也是如此?

转载 作者:数据小太阳 更新时间:2023-10-29 04:45:02 26 4
gpt4 key购买 nike

我正在寻找更多有关从 Javascript 启动文件下载的最佳方式的想法。

Best way to initiate a download?有很多好的想法可以总结:

  • 在 iframe 上设置 src
  • 使用 window.location.replace()
  • 使用带有元刷新标题的页面
  • 使用 window.open()
  • 让服务器直接输出文件,设置Content-Type和Content-Disposition

所有这些方法都适用于我测试过的浏览器,IE8 除外。使用 IE8,我遇到了一堆问题:

  • 由于我正在使用的环境设置的 cookie,iframe 无法正常工作。我想我需要启用 P3P header 来解决这个问题,但环境不允许我设置 header ,所以 P3P 已经过时了
  • window.location.replace() 的工作原理除了在 IE8 中,窗口的地址栏更改为文件的 URL 并且底层窗口为空白在下载的文件打开
  • 元刷新方法也有效,但地址栏仍然更改为文件的 URL,文件下载后底层窗口为空白
  • 我极力避免使用 window.open() 来避免任何弹出窗口拦截问题
  • 我所在的服务器环境不允许您输出文件本身,就像您在 ASP.NET 的 Response 对象中所做的那样

我什至没有在 IE6 或 IE7 上尝试过这些方法,所以那里可能还有其他惊喜。

因此,对于在 IE 中启动下载,是否有人有任何其他建议,其中 (1) 不涉及弹出窗口,并且 (2) 可以保存或打开文件,并且 (3) 没有留下空白窗口,(3)仅使用 Javascript、HTML 和文件的 URL?

丹佛迈克

最佳答案

下载文件页面的通常模式(如果你必须有一个;我个人讨厌它们)是:

<script type="text/javascript">
window.onload= function() {
window.location= document.getElementById('downloadlink').href;
}
</script>
<p>
Your download will begin shortly. If it doesn't,
<a id="downloadlink" href="file.zip">click here</a>.
</p>

或者与元刷新相同,而不是脚本。两种方式的行为应该几乎相同。

The meta refresh approach also works, but still the address bar changes to the URL of the file and the underlying window is blank after the file downloads

这不应该发生。网上有没有可以测试的版本?通常,当浏览器通过任何正常方法(链接单击、location.href、元刷新)被推送到直接文件下载时,它应该保持上一个页面在屏幕上。

the environment doesn't allow me to set headers, so P3P is out

您不必使用 header 来设置 P3P 策略,HTML 标记也可以:

<link rel="P3Pv1" href="/policy.p3p" />

但为什么需要这样做?如果目标 URL 只是提供一个文件,则根本不需要设置 cookie,那么为什么还要使用 P3P?

I'm desperately trying to avoid window.open() to dodge any popup blocker problems

如果您 window.open() 响应用户点击,则不会出现弹出窗口拦截器问题。

并不是说您无论如何都需要打开一个弹出窗 Eloquent 能下载文件。我开始认为您链接到的文件下载目的地有一些非常奇怪的东西 — 就像它根本不是文件下载,而是某种奇怪的 HTML 网络应用程序。链接到下载并不难,您只需链接到文件,工作就完成了;你似乎使这比本质上要难得多。

仅链接到文件的唯一常见问题是,如果它包含文本、HTML、XML 或图像,浏览器将直接显示而不是下载它。解决这个问题的唯一方法是使用“Content-Disposition: attachment” header ,通过设置此 header 的脚本提供它,或者通过配置您的网络服务器为所有文件下载发送该 header 。如果您无法在您的服务器环境中执行其中任何一项,则没有解决方案。

关于javascript - 启动一个运行良好的文件下载,即使在 IE 中也是如此?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/727934/

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