我目前正在使用元 http-equiv='Refresh' 来自动开始 PDF 下载。然而,这对每个浏览器都有不同的影响。
主要问题出在 IE(6 和 7)上,一旦用户被重定向到 PDF,如果用户单击后退按钮,他们将被发送回启动下载的页面,然后立即再次重定向到 PDF。
Windows 上的 Firefox 有更好的效果,但仍不完美,用户进入下载页面并被重定向到 PDF。但是,如果他们使用后退按钮,则会完全错过下载页面。
目前 Linux 上的 Firefox 具有我想要的确切效果。因为下载页面会将您重定向到 PDF,而 PDF 的后退按钮会将您送回下载页面,然后您就停留在那里。
我曾尝试使用 javascript setTimeout() 函数来延迟 PDF 的弹出窗口,但是延迟似乎在任何浏览器中都不起作用,并且弹出窗口似乎在 IE7 中不起作用。
有没有人对我可以使用的问题实现了优雅的解决方案?
在此先感谢您的帮助
最佳答案
推荐人
您可以检查推荐人:
if (document.referrer != "http://homepage.com/file.pdf") {
// go to the file
}
它有点复杂,因为您必须与引荐来源网址的绝对 URL 进行比较,但这应该不是问题。
Cookies
您可以在第一次进入下载页面时设置一个cookie。如果设置了 cookie(对于每个文件,cookie 中的另一个条目),那么您不应该重定向。
缺点是如果有人重新加载页面(因为他想再次查看该文件),他将无法再访问该文件。围绕它有一些可能性:
- 设置一个在 cookie 中过期的时间戳。
- 添加用户可以手动点击的页面链接。
设置/获取 cookie:
if (document.cookie && document.cookie == "I was here!") {
alert(document.cookie);
} else { // set a cookie
document.cookie = "I was here!";
}
Javascript 可以像这样重定向:
window.location.href = "http://www.google.com";
关于javascript - 自动下载的优雅解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/531786/