【问题标题】:elegant solution for automatic downloads优雅的自动下载解决方案
【发布时间】:2010-10-06 14:48:36
【问题描述】:

我目前正在使用 meta http-equiv='Refresh' 来自动开始 PDF 下载。但是,这对每个浏览器都有不同的影响。

主要问题在于 IE(6 和 7)一旦用户被重定向到 PDF,如果用户单击后退按钮,他们将被发送回启动下载的页面,然后立即再次重定向到 PDF。

Windows 上的 Firefox 效果更好,但仍不完美,用户进入下载页面并被重定向到 PDF。但是,如果他们使用后退按钮,则会完全错过下载页面。

目前 Linux 上的 Firefox 具有我想要的确切效果。因为下载页面会将您重定向到 PDF,而 PDF 中的后退按钮会将您发送回下载页面,然后您就可以停留在那里。

我曾尝试使用 javascript setTimeout() 函数来延迟 PDF 的弹出窗口,但是延迟似乎在任何浏览器中都不起作用,并且弹出窗口似乎在 IE7 中不起作用。

有没有人为我可以使用的问题实现了一个优雅的解决方案?

提前感谢您的帮助

【问题讨论】:

    标签: javascript html pdf download meta-tags


    【解决方案1】:

    您可以通过 javascript 将 iframe 添加到 DOM,并将 src 设置为您要下载的 url。浏览器根本不会改变页面,下载只会开始。它可以使用 CSS 隐藏,用户甚至永远不会知道它的存在。

    【讨论】:

      【解决方案2】:

      如果我理解你需要正确,你想做类似文件共享行为:用户等待几秒钟的计数器,超时后你将他重定向到开始下载的页面。 p>

      也许您应该简单地显示链接 来下载页面而不是重定向?此页面应发送标题“强制下载”以避免浏览器在其上导航。如果有人会尝试直接访问此页面 - 检查引荐来源网址或标题或您可以想象的任何其他保护(如动态链接),也许您已经有了一个。

      这个解决方案可以让你避免 JS 魔法,并且应该让你的代码跨浏览器没有麻烦。

      【讨论】:

        【解决方案3】:

        推荐人

        您可以查看推荐人:

        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";
        

        【讨论】:

        • 这意味着如果你真的想多次打开一个文档,它就不会显示出来(你已经看过一次了!)。
        【解决方案4】:

        使用 javascript 弹出窗口

        这样,当用户访问 pdf 时,它位于不同的浏览器中,您可以将其关闭。完成此操作后,您可以继续浏览该网站。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-04-28
          • 1970-01-01
          • 2011-03-31
          • 2011-02-13
          • 1970-01-01
          • 1970-01-01
          • 2012-10-25
          • 2023-03-19
          相关资源
          最近更新 更多