我正在使用Java Servlet 3.0的AsyncContext
实现使用长池的应用程序。
如您所知,始终应该有一个打开的连接,可以监听服务器并接收推送通知。我没有问题,但会出现以下问题:
当在浏览器中的任何地方按ESC
键时(无论何时未选择任何内容或我在文本区域/文本区域中聚焦),浏览器都会关闭应保持打开的请求。
预期的行为是什么? 是否有跨浏览器方式来阻止此行为?
我使用Firebug
在Chrome和Mozilla上测试了这个 我知道我可以在keyup
上发送一个附加body
事件的新请求,但这可能会在使用大量event.stopPropagation()的大型JS文档中出错。
LE:Firebug日志:
答案 0 :(得分:0)
Mozilla在这个问题上存在一个突出的问题,该错误最初是在2010年发布的。
https://bugzilla.mozilla.org/show_bug.cgi?id=614304
“按ESC退出在Firefox中打开XMLHttpRequests。这在其他浏览器中不会发生(除了在WebKit中,但只有在页面加载完成之前启动了XHR)。”
作为一种解决方法,我建议您可以捕获任何ESC按下。使用jQuery,您可以执行以下操作:
$(document).keyup(function(e) {
if (e.keyCode == 27) { return false };
});