如何查看是否加载了Dojo对话框?

sha*_*tch 5 javascript gis dojo dialog esri

我正在运行一个函数,如果它被加载,需要关闭一个Dojo对话框.如何检查dojo对话框是否正在运行?如果未定义,我是否使用纯JavaScript并按ID检查?

if (dijit.byId("blah") !== undefined) { 
     destroyRecursive dijit;
}
Run Code Online (Sandbox Code Playgroud)

或者我使用对话框对象的属性,如:

isFocusable method
isLoaded property
Run Code Online (Sandbox Code Playgroud)

Mai*_*ine 4

Dialog 提供了您可能想要检查的两个属性isLoaded:和open。通过挖掘代码,您会发现以下描述:

  • open:如果 Dialog 当前显示在屏幕上,则为 True。
  • isLoaded:如果 ContentPane 中有数据,则为 True,或者在初始化期间指定(通过 href 或内联内容),或者通过 attr('content', ...) / attr('href', ...) 设置 False 如果它没有任何内容,或者 ContentPane 仍在下载 href。

所以,你可以:

var dialog = dijit.byId("blah");
if( dialog.open ) {
    dialog.destroy();
}
Run Code Online (Sandbox Code Playgroud)