在回答其他问题时,有人指出SourceForge的下载页面通过添加隐藏的< iframe>来工作。这似乎不再是这样......
如何实施下载页面的当前版本?我想建立类似的东西,因为我认为SF的解决方案非常优雅。
好的,更准确地说......真的,最初的“问题”太模糊了。
如果您转到http://sourceforge.net/projects/beankeeper/files/beankeeper/2.6.2/beankeeper-2.6.2.tar.gz/download,可以使用普通的旧HTML链接下载相关文件,但也可以自动下载。延迟似乎是2s。
有人问我的具体用例。我会回答,知道它可能会在一定程度上偏离OP。非常简化:
如果我采用SF的模型,表单提交将触发调度程序Servlet并重新加载当前页面(常规行为)。重新加载页面后,我会以某种方式 - 对,SF如何做到这一点? - 使浏览器调用文档Servlet。
答案 0 :(得分:8)
只需在页面加载期间更改窗口位置。
这是一个SSCCE,只是复制'n'paste'n'run它。
<!doctype html>
<html lang="en">
<head>
<title>SO question 2222034</title>
<script>
window.onload = function() {
setTimeout(function() {
window.location = 'http://download.java.net/maven/1/jstl/jars/jstl-1.2.jar';
}, 2000); // It's "cool" to let user wait 2 more seconds :/
}
</script>
</head>
<body>
<p>The download of jstl-1.2.jar will start shortly...</p>
</body>
</html>
或者,如果您需要使用POST,只需提交一个隐藏的表单:
<!doctype html>
<html lang="en">
<head>
<title>SO question 2222034</title>
<script>
window.onload = function() {
setTimeout(function() {
document.getElementById('downloadform').submit()
}, 2000); // It's "cool" to let user wait 2 more seconds :/
}
</script>
</head>
<body>
<p>The download of jstl-1.2.jar will start shortly...</p>
<form id="downloadform" action="http://download.java.net/maven/1/jstl/jars/jstl-1.2.jar"></form>
</body>
</html>
答案 1 :(得分:5)
这是严格的MHO,但我个人既没有找到SourceForge,也没有找到CodePlex的下载页面特别优雅。看看Google Code:点击超链接立即启动下载,而不要求您接受任何类型的许可协议,选择下载镜像或查看数十个横幅。它只是做它必须做的事情:允许用户下载他们感兴趣的任何文件。