2010-09-05 39 views
15

我需要用javascript动态启动下载。我看到人们如何通过执行类似用javascript开始下载

window.open("some url", "Download"); 

做到这一点,但我需要做的是在不改变当前页面的URL(而不是使用框架,如果我能帮助它,或者动态创建和销毁框架)。任何人都知道如何做到这一点?

+0

window.open不会更改当前页面的url。它会打开一个新页面(除非弹出窗口阻止程序停止它)。 – Zafer 2010-09-05 04:06:00

+0

在Chrome中它什么都不做,我也需要一个跨浏览器的方法。 – kzip 2010-09-05 04:18:44

+0

哦,其实我错了,Chrome甚至没有告诉我它阻止了弹出窗口。谢谢。 – kzip 2010-09-05 04:20:23

回答

29

你不需要window.open()。这很简单丑陋,容易出现popupblockers(你无法控制客户端)。如果请求的下载URL的响应头包含Content-Disposition: attachment,则只需window.location就足够了。这不会改变浏览器地址栏中的当前URL或当前页面,而只是弹出一个另存为对话。

E.g.

window.location = 'http://download.winzip.com/winzip145.exe'; 
0

您现在处于正确的轨道上,您必须强制浏览器请求新的“页面”,即使该页面是文件。

你可能想尝试的window.open()第二个参数的关键字之一 - 像_blank - 必须有某种办法让在Chrome中打开新的URL ...