【发布时间】:2014-08-26 19:47:44
【问题描述】:
以下所有内容都会成功地将用户重定向到另一个页面(当然是their own caveats):
-
window.location.replace(new_url), -
window.location.assign(new_url), -
window.location = new_url,
对someone asking if you can get a callback for changing location 的典型回应当然是不,因为将用户带到新页面意味着您页面上的脚本不再有效。
这一切都很好,但在您使用上述三种方法中的任何一种下载文件的情况下,用户不仅会停留在与他们所在的页面相同的页面上,而且还会有轻微的延迟(取决于网络速度)在更新 location 和文件实际开始下载之间。
在这种情况下(用户留在更新window.location 的页面上),是否有任何方法可以创建回调,例如,在重定向之前的行显示加载图标直到文件真的开始下载了吗?
【问题讨论】:
-
See this old question of mine. 特别是 T. J. Crowder 的回答效果很好。
-
您在这里真正要说的是,您正在重定向到具有正确标题和响应代码的文件,因此页面并没有真正重定向,它只是开始下载。如果是这样,您可以在重定向上方的行中显示加载图像,并在下面的行中将其删除,因为“滞后”是浏览器停止。
-
@adeneo 在文件开始下载之前重定向触发后立即放置代码。我假设“滞后”实际上是在服务器上等待响应请求的文件。
-
然后看看@Pointy 发布的内容,在文件启动时使用服务器设置的 cookie 以及检查此类 cookie 的时间间隔是此类问题的常见解决方案。
标签: javascript html google-chrome