2012-08-30 57 views
1

我正在使用長池和Java Servlet 3.0的AsyncContext實現應用程序。當在瀏覽器中的任意位置按ESC時,取消等待請求

如您所知,始終應該有一個打開的連接,監聽服務器並接收推送通知。我沒有問題,但有以下問題發生:

無論在瀏覽器中按下ESC鍵時(無論什麼時候被選中或當我在textfield/textarea焦點)應該保持打開的請求是由瀏覽器關閉。

是預期的行爲? 是否有跨瀏覽器的方式來阻止此行爲?

我使用Firebug

我知道我可以觸發一個新的請求連接的keyup事件上body但是這可能會成爲容易出錯的使用大量事件的大型JS文件中測試了這個在Chrome和Mozilla .stopPropagation()

LE:將螢火蟲日誌:

enter image description here

+0

我們socket.io使用,我從來沒有注意到這樣的事你肯定沒有自定義事件監聽器監聽ESC地方 – David

+0

@大衛我測試了不附加任何按鍵偵聽功能事件和我得到了同樣的結果。 – Ionut

回答

0

有Mozilla的一個優秀的bug關於這個問題,這是第一次在2010年

https://bugzilla.mozilla.org/show_bug.cgi?id=614304

eported回「按ESC中止在Firefox中打開的XMLHttpRequest。這不會發生在其他瀏覽器(除了在WebKit,但只有在頁面完成加載之前啓動XHR)。「

作爲解決方法,我建議您可以捕獲任何ESC印刷機。如下:?

$(document).keyup(function(e) { 
    if (e.keyCode == 27) { return false }; 
});