【发布时间】:2010-10-07 15:48:38
【问题描述】:
我正在开发一个需要长时间运行 Ajax 请求的 Web 应用程序。不幸的是,在 Firefox 下,在请求期间按 Escape 的缺点是会终止请求及其所持有的任何信息。这很烦人,因为如果这发生在错误的时间,可能会导致各种令人讨厌的并发症。因此,我想停用此功能。
我的第一个反应是在
的边界处拦截按键,以确保它们不会到达窗口。为此,我安装了一个 [keypress] 事件处理程序,仅针对 [keyChar] 为 27 的事件,并让它调用 [stopPropagation] 和 [preventDefault]。有一段时间,它看起来很有效。然后,我意识到当用户没有单击窗口上的任何位置时它不起作用,因为
事件处理程序从未收到该事件。我试图将我的处理程序附加到然后,我意识到当用户编辑 时,出于某种原因,
、目前,它看起来正在运行。但是,鉴于我的应用程序中存在此错误的历史,我有点悲观。
所以,我想知道是否有更好的 - 并且可重复的 - 方法。回想一下,这个 bug 似乎只出现在 Firefox 中,所以我非常愿意在这里采用仅 Firefox 的方法。
【问题讨论】:
-
Esc究竟是如何取消 Ajax 请求的?我以前从未听说过这种情况。 -
@Matt,如果你有萤火虫,你会注意到连接在你点击逃生的那一刻就被杀死了。
-
@Kirk - 哇,我看到了。没有 Firebug 也会发生这种情况吗?
-
是的,它确实会阻止 XHR,即使关闭了 firebug。
-
我不明白为什么来自文本字段的事件没有冒泡到文档中。我测试了它,它对我有用。该输入上的任何其他处理程序会阻止它吗?
标签: javascript ajax firefox dom-events comet