为什么我在使用Ext.Msg对象时只显示一条警报消息?

时间:2015-02-12 08:54:41

标签: javascript extjs

在我的ExtJs应用程序中,我使用 Ext.Msg 对象以及一个普通的java脚本警报创建了两条警报消息。下面是代码。

Ext.onReady(function(){
    Ext.Msg.alert("Alert One");
    Ext.Msg.alert("Alert Two");
    alert("Alert Three");
});

运行此代码后,我发现浏览器首先显示正常的警报消息,然后显示第二个Ext JS警报消息。它没有填充第一个Ext JS警报消息

所以我的问题是

  1. 为什么首先填充普通的java脚本警报?
  2. 为什么不填充第一个Ext JS警报消息?
  3. 我做错了吗?如果没有那么为什么会发生这种情况?请帮我。

2 个答案:

答案 0 :(得分:2)

Ext.Msg.alert方法不会阻止javascript代码执行。这意味着在第一个Ext.Msg.alert显示脚本执行后,打开第二个Ext警报。根据其工作原理,一次只能显示一个警报消息实例,因此第二个实例只会覆盖第一个实例。

就本地alert功能而言,它的工作方式完全不同。它会阻止UI并停止后续脚本执行。您可以看到它,因为它是通过任何其他页面布局呈现的。这就是为什么即使提出Ext警报,本机浏览器警报仍将覆盖它。

答案 1 :(得分:0)

Ext.MessageBox是一个单例,因此您无法创建多个单独的实例。为了证明这一点如果您要添加一个延迟来显示第二个,比如5秒,您会看到第一个出现。 E.g。

Ext.Function.defer(function(){
    Ext.MessageBox.alert("message two");
}, 5000);