这是一个网络可用性功能:禁止双击链接和表单提交。
在你认为我是个彻头彻尾的白痴之前,请允许我谈谈这个想法。
在操作系统中的任何地方,无论是Windows还是Mac OSX,在目录之间导航的默认行为都是双击它们。我们接受过双击任何东西的训练。
想要打开应用程序吗?双击该图标。想要在邮件客户端中打开电子邮件吗?双击该主题。到处都是双击。
我们知道我们应该只点击一个链接。我们知道应该只单击表单提交一次。但有时,我们会双击。这不是因为我们是故意这么做的,而是因为我们的大脑天生就会双击所有东西。
对于像我们这样的技术人员来说,双击是偶然发生的。这是一个自动双击,这是我们没有真正考虑过的。一件我们不想做的事。
对于不太懂技术的人,也就是普通的男人或女人来说,双击时有发生。用户没有技术背景,所以他们不知道网页只需点击一下就可以工作。或者他们确实这么做了,他们看不出双击有什么害处。
如果您不小心双击了表单提交,则会提交两次。就这么简单。
10.0.1.1--[18/Apr/2015:00:37:06+0400]";POST/index.php HTTP/1.1";200 0 10.0.1.1--[18/Apr/2015:00:37:07+0400]";POST/index.php HTTP/1.1";200 0。
10.0.1.1--[18/Apr/2015:00:37:06+0400]";get/index.php HTTP/1.1";200 9105 10.0.1.1--[18/Apr/2015:00:37:07+0400]";get/index.php HTTP/1.1";200 9104。
这个问题在某种程度上通过快速服务器得到了解决。如果页面加载速度足够快,那么下一个页面可能已经在下载/渲染了,所以双击的第二次点击就是在当前页面和下一个页面之间产生了某种空白。
对于速度较慢的服务器,这只是需要更多的时间来生成响应,双击仍然会发生,然后重新提交或重新打开链接。
如果您不小心(我们都这样做过)双击一个表单提交,您将提交两次。这意味着无论请求什么操作,服务器都会执行两次。
修复客户端相对简单,在第一次提交注册后禁用表单提交按钮。有一个简单的jQuery代码片段可以为您解决这个问题。
在服务器端,修复方法可能是在特定的时间范围内实现某种速率限制或双重提交保护。在服务器端,这是一个更难解决的问题。
我想不出为什么像表单提交这样的东西必须因为双击而执行两次。
对于响应较慢的服务器,用户在几秒钟后再次点击提交是合理的,并且没有给出任何反馈。由于缺少有关请求仍在处理的视觉反馈,因此人们期望表单提交不起作用。
因此,用户再次提交,认为他在第一次尝试时一定是弄错了。如果浏览器在不到2秒的时间内注册了相同的表单提交,那么这肯定是个错误,会不会被算作意外的双击?
为什么每个Web服务都要实现双击保护,无论是客户端还是服务器端,并重新发明轮子呢?这难道不是一个很棒的浏览器功能吗?
如果双击在默认情况下被阻止,并且可以通过在表单上设置新属性再次启用,该怎么办?
设置Allowmulessubbmitts属性会导致浏览器允许在同一页面中向同一表单提交多个内容,默认情况下,浏览器具有某种泛洪/重复/双击保护来防止这种情况发生。
也许我想得太多了,这不是问题。但是,任何活跃在网络上的人,在某一时刻都会意外地双击。我认为我们已经有了所有可用的技术来一劳永逸地解决这个问题。
它以最新新闻、指南和教程以及新的开源项目为特色。您可以通过下面的电子邮件注册。