我的瀏覽器每隔20秒使用window.setTimeout()
向服務器發送保持活動的異步調用。問題:當彈出alert()
時,AJAX調用被暫停。如果用戶在解除彈出窗口之前等待了一段時間 - 服務器將(錯誤地)關閉登錄會話。在alert()打開時創建異步AJAX
我們使用alert()
彈出錯誤消息,我不能使用其他方法,因爲這是產品定義。
任何方法來解決這個問題?謝謝
我的瀏覽器每隔20秒使用window.setTimeout()
向服務器發送保持活動的異步調用。問題:當彈出alert()
時,AJAX調用被暫停。如果用戶在解除彈出窗口之前等待了一段時間 - 服務器將(錯誤地)關閉登錄會話。在alert()打開時創建異步AJAX
我們使用alert()
彈出錯誤消息,我不能使用其他方法,因爲這是產品定義。
任何方法來解決這個問題?謝謝
alert()
以及prompt()
所有阻止UI線程,這意味着所有其他操作被暫停。
我建議你使用模態窗口,而不是像the ones in jQueryUI。
對不起,爲什麼你不能使用警報以外的東西?警報不是很有吸引力或用戶友好。一個簡單的模式窗口(如爲例)是更好的...
由於@JosephtheDreamer在他的回答中提到,alert
,prompt
和confirm
都將阻止用戶界面。
如果你真的想使用alert
,那麼你可以使用WebWorkers。它們在單獨的線程中運行,因此不會受到UI阻塞的影響。他們有decent support,但像往常一樣在IE不工作< 10.
這實際上是相當複雜的,所以我會建議遵循@ JosephtheDreamer的建議,並與模態窗口。他們不難做,並且會更簡單地解決問題。請參閱mdn。
嘗試更換默認的警報行爲
window.alert = function(message) {
// put your dialog box launching code here.
}
或本
alert = function(foo) {
// some functionality
};
啊,我知道我遺漏了一些東西。這是'confirm()'。很長一段時間沒有使用過。 – Joseph
我今天就用它=)在我的情況下,阻止用戶界面是故意的。有一個按鈕可以刪除數據庫中的所有內容,所以我想確保用戶收到了這條消息。 – tjameson