我正在运行需要关闭Dojo对话框的函数(如果它已加载)。如何检查dojo对话框是否正在运行?我是否使用纯JavaScript并通过ID检查它是否未定义?如何检查Dojo对话框是否已加载?
if (dijit.byId("blah") !== undefined) {
destroyRecursive dijit;
}
还是我喜欢使用对话框对象的属性:
isFocusable method
isLoaded property
我正在运行需要关闭Dojo对话框的函数(如果它已加载)。如何检查dojo对话框是否正在运行?我是否使用纯JavaScript并通过ID检查它是否未定义?如何检查Dojo对话框是否已加载?
if (dijit.byId("blah") !== undefined) {
destroyRecursive dijit;
}
还是我喜欢使用对话框对象的属性:
isFocusable method
isLoaded property
Dialog provides two properties你可能要检查:isLoaded
和open
。通过挖掘代码,您可以找到以下说明:
所以,你可以只:
var dialog = dijit.byId("blah");
if(dialog.open) {
dialog.destroy();
}
8年后,您应该使用if(dialog && dialog.open)或其他安全检查'dialog'exists('typeof(dialog)!='undefined' ','dialog!= null'等)。 – Daevin 2017-07-06 14:33:51
你想隐藏或销毁呢?
如果你只是想显示/隐藏它,你可以做到以下几点:
var dialog = dijit.byId('blah');
if (dialog) {
if (dialog.open) {
dialog.hide();
}
else {
dialog.show();
}
}
如果你想destory它以释放内存:
var dialog = dijit.byId('blah');
dialog.destory();
我觉得destroy
是递归的,因为它称其父母destroy
方法,其父母之一是dijit.layout.ContentPane
。
这是最终的功能: 功能bufferAddress(XCOORD,YCOORD){ 如果(dijit.byId( “selectLocationDlg”)==未定义!){ dijit.byId(“selectLocationDlg”)。destroyRecursive(); } //这里的其他一些代码 } – 2009-07-21 18:03:43