我有一个下载某些文件的表单。用户从下拉列表中选择文件,然后按下按钮以执行下载。代码如下所示:
function downloadApp()
{
var dd = document.getElementById("OSselectDropdown");
var OSchoice = dd.options[dd.selectedIndex].value;
if (OSchoice == "win")
{
window.location.href = "https://" + top.location.host + "/download/win_install.exe";
}
if (OSchoice == "mac")
{
window.location.href = "https://" + top.location.host + "/download/mac_install.pkg";
}
if (OSchoice == "linux")
{
window.location.href = "https://" + top.location.host + "/download/linux_install.tar.gz";
}
我想要实现的目标是在下载开始后将用户带到新页面。但是,我看不出怎么做,因为下载本身实际上已经使用window.location.href
重定向到可下载文件位置。处理完毕后,似乎无法让Javascript执行第二个window.location.href
。
理想情况下,下载会启动,然后用户会自动结束我指定的新页面,而下载会继续作为后台进程。
更理想的是,在新页面上我想要包含一条消息“谢谢您下载”。只有在完成下载过程后将用户带到那里时,该消息才会出现在该页面上。
我想要实现的目标是什么?
(我确实看到此网站上有很多条目用于重定向和下载,但是,这似乎是细节问题的一个问题,并且它们都没有尽可能地符合我的情况告诉。)
答案 0 :(得分:0)
首先使用 -
将用户重定向到感谢页面window.location = thankYouPageURL;
您可以为每个操作系统保留不同的URL,或者您可以使用某个库在get端传递参数并在JavaScript端处理GET参数。
或者使用哈希在同一页面上导航到另一个部分。
location.hash = "#" + thankYouHash;
你也可以为此做一个div叠加或类似的方法。选择下载选项后,切换thankYouDiv的可见性,并隐藏下载选项所在的前一个div。
在thankyou页面上的/ div / hash使用新窗口或iframe开始下载。
IFRAME -
function startDownload(downloadUrl) {
var downloadFrame = document.createElement("iframe");
downloadFrame.setAttribute('src',downloadUrl);
downloadFrame.setAttribute('style',"border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px;");
document.body.appendChild(downloadFrame);
}
下载窗口 -
function startDownload(downloadUrl) {
window.open(downloadUrl, 'download_window', 'toolbar=0,location=no,directories=0,status=0,scrollbars=0,resizeable=0,width=1,height=1,top=0,left=0');
window.focus();
}
答案 1 :(得分:-1)
尝试location.href
代替window.location.href