我考虑在我们的JavaScript实用断言函数中添加alert()
。
我们是一个Ajax-heavy应用程序,我们的框架(Ext)通过使用setInterval
轮询Ajax响应而不是等待readystate==4的方式实现Ajax,导致所有的Ajax回调都在setInterval
堆栈上下文中执行——如果有异常/断言失败,通常会静默地失败。
低级别的alert()
如何影响浏览器事件循环?消息框定义必须允许win32事件循环抽气(响应mbox按钮)。这是否意味着其他浏览器事件(比如我们的框架生成的未来的setInterval
, 调整大小事件等)将被触发? 这会给我带来麻烦吗?
IIRC: 您可以使用Firefox2和Firefox3.5来查看我所说的区别。
alert('1');
setTimeout(function(){alert('2');}, 10);
alert('3');
Firefox 3.5 显示为1-3-2。 Firefox 2[1] 则显示为1-2&3(同时2和3重叠在一起)。我们可以使用从 ActiveX 启动的 win32 mbox 在 IE8 中复制 1-2&3,而不是像过去那样使用警告窗口,这对我们造成了极大的破坏,我希望确保我们不再走这条路。
有没有人能够指向具体的低级资源来解释这种行为,这里的预期行为是什么,以及在低级别上到底发生了什么变化,包括为什么 Firefox 版本间的行为会改变?
[1] 您可以在 Spoon.net 上复制此行为,但我现在无法让它正常工作。我刚在 Firefox 2.0.0.20 的虚拟机中重新生成了它。
alert
的实现在不同的浏览器中有很大的差异。一般来说,在这些事情很重要的情况下,我会避免使用alert
,而是使用自定义的(例如 jQuery UI 风格的)对话框。 - Oliver Moran