【问题标题】:Download a file and redirect...or alternative下载文件并重定向...或替代
【发布时间】:2011-05-21 09:09:12
【问题描述】:

用户填写表格。使用有效的表格,他们点击下载文件。我希望能够将它们重定向到另一个页面(例如,page2.html)并启动下载。

我无法在page2.html 上启动下载,因为如果没有直接点击下载链接,大多数浏览器都会标记安全警告。

这样的事情是如何使用 javascript 或 jquery 完成的?显然以下内容不起作用,但仅用于说明目的:

document.getElementById("foo").onclick = function(){
     window.location = "/download.exe";
     window.location = "/page2.html";
}

【问题讨论】:

    标签: javascript jquery redirect download


    【解决方案1】:

    您可以使用文件链接和onclick 触发“很快转到下一页”。

    <script>
    function thanks() {
        setTimeout(function () {
            document.location.pathname = "page2.html";
        }, 1000);
    }
    </script>
    
    <a href="file.exe" onclick="thanks()">Download now!</a>
    

    【讨论】:

    • 好的!这至少适用于 IE。在 FF、Chrome 和 Safari 上,用户没有足够的时间点击“允许”字段。但正如你在上面的评论中所说,我可能不得不忍受它。可能会为我的 IE 用户使用它。
    • 当它试图转到其他东西时,他们是否只是关闭“下载”提示?很奇怪。
    • 是的,下载提示消失了(IE 除外)。
    • target="_blank"怎么样?
    【解决方案2】:

    您可以在页面加载后通过page2.html“更改”其位置(到您的下载 URL)来启动第 2 页上的下载:

    $(function ()
    {
        setTimeout(function ()
        {
            window.location.pathname = '/download.exe';
        }, 5000); // download the file in 5 seconds
    });
    

    我很确定(虽然不是 100%)不会触发安全警告。

    【讨论】:

    • 我在 Safari 5、Chrome 8、FF 3.6 和 IE7、IE8 上对此进行了测试。对于 Internet Explorer,下载行为是不同的(与直接单击下载链接的情况不同)。在 IE 上,消息“为了帮助保护您的安全......”而如果您直接单击它只会打开一个文件保存。
    • @Emile:无论你做什么,都会如此;这是你必须忍受的正常行为。这就是为什么网站经常有“如果这个下载没有开始,请点击这里”之类的东西。我相信在页面加载时启动下载也是正常的(没有任何其他问题)。
    • 附注....这很奇怪,但在 Safari 5 for Chrome 上,window.location.pathname 会产生意想不到的结果...Safari 尝试使用默认搜索引擎。
    • @Emile:您的意思是“Safari 5 Chrome?”您有机会发布复制链接吗?
    • @马特!哈!哎呀...意思是 Safari 5 for Windows 7。我没有要显示的服务器版本,但您可以将 window.location.pathname 附加到 onclick 事件。
    猜你喜欢
    • 2011-08-30
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 2013-01-06
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多