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

时间:2009-07-20 23:16:59

标签: javascript dojo dialog gis esri

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

if (dijit.byId("blah") !== undefined) { 
     destroyRecursive dijit;
}

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

isFocusable method
isLoaded property

2 个答案:

答案 0 :(得分:4)

Dialog provides two properties您可能需要查看:isLoadedopen。通过挖掘代码,您将找到以下描述:

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

所以,你可以:

var dialog = dijit.byId("blah");
if( dialog.open ) {
    dialog.destroy();
}

答案 1 :(得分:1)

你想隐藏它还是摧毁它?

如果您只想显示/隐藏它,您可以执行以下操作:

var dialog = dijit.byId('blah');
if (dialog) {
  if (dialog.open) {
    dialog.hide();
  }
  else {
     dialog.show();
  }
}

如果你想破坏它以释放记忆:

var dialog = dijit.byId('blah');
dialog.destory();

我认为destroy是递归的,因为它调用其父destroy方法,其中一个父项为dijit.layout.ContentPane