我有可能成为一个可以解决的概念问题。我甚至不确定将它放在哪个标签下......
我有一个ASP.NET Web表单应用程序。它有<form method="post">
并使用来自网页的传统提交,服务器回复新页面的响应。它不使用AJAX,回调或其他异步技术。它使用JavaScript,但不使用jQuery。
当用户开始提交进行“长时间操作”时,我被要求建立一个“无模式窗口”,其中包含“处理,请稍候”类型的消息。
我已经编写了部分代码,当提交启动时,JavaScript会在页面上放置一个带有高z顺序的 DIV 。原理是当在响应中返回新页面时,它会替换当前页面,当然,无模式窗口也会消失。
一切似乎都很好,直到我看到发生的事情,例如,用户操作导致应用程序发回文件。 Web浏览器询问用户如何处理它,同时我的消息仍在那里。更重要的是,应用程序根本不发送任何新页面(它只是Response.End()
),因此用户将保留在原始页面上,并且消息仍然存在。另一条代码路径可能会发回“响应状态代码204无内容”。
以上只是页面上的按钮可能要求服务器执行操作的示例。最重要的是,如果服务器不要发回新页面,我(我想)当服务器启动/完成任何响应时,需要知道原始页面的JavaScript生产,以便它可以删除“无模式窗口”。
是否有可能,因为该页面正在提交来自客户端?