3

我的浏览器每 20 秒使用window.setTimeout(). 问题:当alert()弹出时,AJAX 调用被暂停。如果用户在关闭弹出窗口之前等待一段时间 - 服务器将(错误地)关闭登录会话。

我们习惯alert()弹出错误消息,我不能使用其他方法,因为这是产品定义。

有什么办法可以解决这个问题?谢谢

4

4 回答 4

4

alert()以及prompt()所有阻塞 UI 线程,这意味着所有其他操作都被暂停。

我建议您改用模态窗口,例如jQueryUI 中的那些

于 2012-11-27T09:24:21.040 回答
3

正如@JosephtheDreamer 在他的回答中提到的那样alertpromptconfirm都会阻止用户界面。

如果你真的想使用alert,那么你可以使用 WebWorkers。它们在单独的线程中运行,因此不受 UI 阻塞的影响。他们有不错的支持,但像往常一样在 IE < 10 中不起作用。

这实际上非常复杂,所以我建议遵循@JosephtheDreamer 的建议并使用模态窗口。它们并不难做到,而且会更简单地解决问题。

有关 WebWorker 的更多信息,请参阅mdn

于 2012-11-27T09:27:30.753 回答
0

对不起,为什么你不能使用除了警报之外的东西?警报不是很有吸引力或用户友好。一个简单的模态窗口(例如jQuery UI)要好得多……

于 2012-11-27T09:24:37.433 回答
0

尝试替换默认警报行为

window.alert = function(message) {
// put your dialog box launching code here.

}

或这个

alert = function(foo) {
// some functionality

};

于 2012-11-27T09:52:35.057 回答