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

Javascript 为什么在使用Ext.Msg对象时只显示一条警报消息?,javascript,extjs,Javascript,Extjs,在我的ExtJs应用程序中,我使用Ext.Msg对象和一个普通java脚本警报创建了两条警报消息。下面是代码 Ext.onReady(function(){ Ext.Msg.alert("Alert One"); Ext.Msg.alert("Alert Two"); alert("Alert Three"); }); 运行此代码后,我发现浏览器首先显示正常警报消息,然后显示第二条ExtJS警报消息。它没有填充第一条Ext JS警报消息 所以我的问题是 为什么要先填充普

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

Ext.onReady(function(){
    Ext.Msg.alert("Alert One");
    Ext.Msg.alert("Alert Two");
    alert("Alert Three");
});
运行此代码后,我发现浏览器首先显示正常警报消息,然后显示第二条ExtJS警报消息。它没有填充第一条Ext JS警报消息

所以我的问题是

  • 为什么要先填充普通java脚本警报
  • 为什么不填充第一条Ext JS警报消息

  • 我做错什么了吗?如果没有,为什么会发生这种情况?请帮帮我

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


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

    Ext.MessageBox是一个单独的实例,因此您不能创建多个单独的实例。为了证明这一点,如果您在显示第二个时增加延迟,比如说5秒,您将看到第一个出现。例如

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

    不是重复的,而是相关的,因为它为当前问题提供了解决方案: