在javascript中,如果我有一个无限循环:
setInterval("popalert", 5000)
在哪里popalert()
简单地弹出一个警报框,如果已经有一个尚未关闭的警报框,那么最好的方法是使警报框不会弹出?
在javascript中,如果我有一个无限循环:
setInterval("popalert", 5000)
在哪里popalert()
简单地弹出一个警报框,如果已经有一个尚未关闭的警报框,那么最好的方法是使警报框不会弹出?
检测标准的 javascript 警报框是不可能的,因为它们非常简单。如果您继续生成它们,它们只会排队,在现代浏览器中,它实际上为您提供了在几个之后为某个页面禁止它们的选项。
如果任何时候不超过 1 个框对您很重要,我会考虑使用不同类型的通知系统。像jQuery UI Dialog这样的东西。
popalert 函数可以保存警报框的状态。
var bOpen = false;
然后当它弹出时设置为真
如果它在按下 ok 后关闭或再次将其设置为 false。
当 popalert 再次被调用时,它会检查 bOpen 变量,如果它是真的,它就不会打开一个新的弹出窗口。
我也会使用 settimeout,所以你不会让这个无限循环的东西阻塞你的 gui。
您无法检测到警报框是否已经存在。您的导航器管理此警报框,因此如果另一个已经在这里,它们将无法弹出。
您可以使用全局 javascript 变量(在任何函数之外)并将此 var 最初设置为 false。如果调用了 popalert 函数,请检查全局 var 是否为 false。如果是这样,请弹出警报并将 var 设置为 true。这样做只会显示一个警报,但您的函数将一次又一次地执行(如果这很重要)。