对标题表示歉意,我发现很难简洁地定义我的问题,这是我能做的最好的事情。如果有人想编辑它以添加更好的标题,请成为我的客人。
无论如何,这个问题。我们的网页上允许用户删除某些内容。他们通过点击删除链接来完成此操作,如下所示:
<a href="http://localhost/a/path/remove-thing.html?ID=42" onclick="return confirm('Are you sure you want to remove this thing?');" >Remove this thing!</a>
现在,显然,通常当用户单击该链接时,他们会看到一个 JavaScript 确认框,要求他们确认是否要删除该内容。如果他们单击 ccel,则 onclick 事件为 false,因此不会发生删除;如果他们点击“确定”,那么就可以了。
我的问题是,如果用户单击页面中的另一个链接(到任何地方),然后在加载第一个页面之前快速单击删除链接,则 JavaScript 永远不会被触发,但事情 被删除 - 当他们点击“删除这个东西!”时他们触发了该 URL,而不是他们最初单击的 URL。有办法避免这种情况吗?我们的确认操作是否“错误”?我认为这与浏览器关闭 JavaScript 检查有关,当您单击第一个链接时,它准备呈现新页面,但在页面消失之前仍然接受 URL 的更改...
(这已经在 Firefox 3.6 中进行了测试,并确认了那里的问题。尚未测试其他浏览器。)
最佳答案
解决这个问题的一种方法是,可以更优雅地降级,如下所示:
- 创建一个单独的确认页面,这些链接会将您发送至该页面
- 使用 javascript 显示对话框,如果"is",则将用户直接发送到删除页面
这样,即使没有 JavaScript,它也能工作,并且有望消除您的问题
编辑
如果js始终存在,您可以始终将默认链接设置为空,并在确认后重定向用户
关于javascript - 如果用户单击一个链接,然后快速单击另一个链接,则不会触发第二个链接的 onclick。我们如何避免这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3556547/