我目前正在使用meta http-equiv ='Refresh'来自动启动PDF下载。但是这对每个浏览器都有不同的影响。
主要问题是IE(6& 7)一旦用户被重定向到PDF,如果用户单击后退按钮,他们将被发送回发起下载的页面,然后再次立即重定向到PDF。
Windows上的Firefox效果更好,但用户无法访问下载页面并重定向到PDF。但是,如果他们使用后退按钮,则会完全错过下载页面。
目前Linux上的Firefox具有我想要的确切效果。由于下载页面将您重定向到PDF并且PDF中的后退按钮会将您发送回下载页面并在那里停留。
我尝试使用javascript setTimeout()函数来延迟弹出PDF,但是延迟似乎在任何浏览器中都不起作用,并且弹出窗口似乎在IE7中不起作用。
有没有人对我可以使用的问题实施优雅的解决方案?
先谢谢你的帮助
答案 0 :(得分:1)
您可以查看推荐人:
if (document.referrer != "http://homepage.com/file.pdf") {
// go to the file
}
它有点复杂,因为你必须与引用者的绝对URL进行比较,但这应该不是问题。
您可以在第一次进入下载页面时设置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";
答案 1 :(得分:0)
使用javascript弹出窗口
这种方式当用户访问pdf时,它位于不同的浏览器中,您可以关闭它。一旦你这样做,你可以继续浏览网站。
答案 2 :(得分:0)
如果我理解你需要正确,你想做类似文件共享行为:用户等待几秒钟的计数器,超时后你将他重定向到开始下载的页面。
也许你应该只是显示链接来下载页面而不是重定向?此页面应发送标题“强制下载”以避免浏览器在其上导航。如果有人试图直接访问此页面 - 检查引用者或标题或您可以想象的任何其他保护(如动态链接),也许您已经有了。
此解决方案将允许您避免JS魔术,并且应该使您的代码跨浏览器没有麻烦。
答案 3 :(得分:0)
您可以通过javascript将iframe添加到DOM,并将src设置为您要下载的网址。浏览器根本不会更改页面,下载才会开始。它可以使用CSS隐藏,用户甚至不知道它在那里。