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

Why only one alert message is displaying when I am using Ext.Msg object?

在我的 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 警报消息?

我是不是做错了什么?如果不是那么为什么会这样?请帮我。

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

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

Ext.MessageBox 是一个单例,因此您不能创建多个单独的实例。演示这一点如果您要延迟显示第二个,比如 5 秒,您会看到第一个出现。例如

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