gpt4 book ai didi

javascript - SourceForge 的下载页面如何工作?

转载 作者:搜寻专家 更新时间:2023-10-31 22:00:02 25 4
gpt4 key购买 nike

在对其他问题的回答中指出,SourceForge 的下载页面通过添加隐藏的 <iframe> 来工作。这似乎不再是这种情况......

当前版本的下载页面是如何实现的?我想构建类似的东西,因为我认为 SF 的解决方案非常优雅。

好吧,更准确地说......是的,最初的“问题”太模糊了。

如果你去http://sourceforge.net/projects/beankeeper/files/beankeeper/2.6.2/beankeeper-2.6.2.tar.gz/download有一个普通的旧 HTML 链接可以下载有问题的文件,但也有一个自动下载。延迟似乎是 2 秒。

有人询问我的特定用例。我会回答这个问题,因为我知道它可能会在一定程度上偏离 OP。非常简化:

  • 或多或少带有两个 Servlet 的传统 Java EE 应用
  • 作为 UI Controller 入口点的调度器 Servlet
  • 将 PDF 流式传输到浏览器的“文档 Servlet”,它通过 content-disposition=attachment 实现,即浏览器显示保存或打开对话框
  • 一个带有多个输入字段和一个提交按钮的打印页面
  • 点击提交按钮时
    • 输入字段值应该在 UI 模型(和必要的 session )中更新 -> 这就是调度程序 Servlet 所做的
    • 必须触发 PDF 的创建 -> 这就是文档 Servlet 所做的

如果我采用 SF 的模型,表单提交将触发调度程序 Servlet 并重新加载当前页面(常规行为)。重新加载页面后,我会以某种方式 - 对,SF 是怎么做到的? - 使浏览器调用文档 Servlet。

最佳答案

只需在页面加载期间更改窗口位置。

这是一个 SSCCE , 只需复制'n'粘贴'然后'运行它。

<!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>

关于javascript - SourceForge 的下载页面如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2222034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com