JavaScript - 检测浏览器停止按钮点击

3

我有一个表单,当用户点击提交按钮时,它会被禁用。 但是如果用户点击浏览器的“停止”按钮呢? 那么他将无法重新提交表单。

有没有办法处理这种情况,可能是检测到“停止”按钮的按下?

3个回答

2
禁用提交按钮的原因是什么?
你是想避免双击吗? -> 你可以禁用提交按钮只有一个短时间,在超时后重新启用它。
你是想避免不耐烦的重新加载点击吗? -> 同样,但是需要更长的不活动期。
你是想阻止表单被重复提交导致重复操作吗? -> 只使用按钮禁用无法解决这个问题,因为返回/前进将导致页面重新加载,可能会保留旧表单内容但不包含已禁用状态,除非通过 bfcache 快速跳过。在这种情况下,您必须创建一个一次性令牌或新项目 ID,该令牌或 ID 不能使用多次,并将其放入表单中的一个隐藏字段中。服务器可以检查它并禁止重复。
可能检测到停止按钮按下吗?
避免使用 onstop,这不是很可靠。除了浏览器支持问题外,它无法捕获所有可能的导航和停止/重新加载等组合。您永远不会知道服务器脚本执行到了哪里,是否执行了操作。

你正在尝试阻止表单被提交两次,以避免重复操作?对于这种情况,请记住适当处理GET/POST语义将使浏览器为您工作。 - JamesTheAwesomeDude

1
你最好的选择是在服务器端检测提交按钮,这样它只能被提交一次。这样,无论发生什么事情(如firebug等),表单只会被提交一次。虽然有一个OnStop()事件,但它只适用于IE浏览器,我不建议使用它。

在服务器端检测多次提交可能会变得非常复杂,这取决于应用程序。 - Pointy

-1

这两个链接都失效了。 - Shadow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接