javascript - 自动下载的优雅解决方案

标签 javascript html pdf download meta-tags

我目前正在使用元 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/

相关文章:

iphone - HTML5 和移动网站开发

xml - 将 fop 表向右移动

javascript - 单击时如何选择多选选择框的所有选项?

javascript - Vue 事件 - 无法监听子组件的 $emit 事件

html - 无法将我网站的主要文本放在侧边菜单旁边,例如标题和其他信息

javascript - 嵌入式 PDF - 无需重新加载文档即可打开页码

ios - CGPDFDocument线程

javascript - 如何使 jQuery 构造函数属性全局可见

javascript - Flask 使用 AJAX 上传文件和按钮提交不起作用

html - 如何在 Bootstrap 中添加汉堡菜单