如何使用Javascript下载后重定向到新页面?

时间:2014-01-04 10:53:06

标签: javascript html

我有一个下载某些文件的表单。用户从下拉列表中选择文件,然后按下按钮以执行下载。代码如下所示:

  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

理想情况下,下载会启动,然后用户会自动结束我指定的新页面,而下载会继续作为后台进程。

更理想的是,在新页面上我想要包含一条消息“谢谢您下载”。只有在完成下载过程后将用户带到那里时,该消息才会出现在该页面上。

我想要实现的目标是什么?

(我确实看到此网站上有很多条目用于重定向和下载,但是,这似乎是细节问题的一个问题,并且它们都没有尽可能地符合我的情况告诉。)

2 个答案:

答案 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