我正在使用Dojo 1.6.1,希望能够使得Dojo对话框可以通过点击对话框外部来关闭。经过研究,看起来最简单的方法之一是这样做:
var dij = dijit._underlay.domNode;
dojo.connect(dij, "onclick", function(e) {
dojo.query('[role="dialog"]').forEach(function(element) {
if (element.className.match("dijit")) {
if(element.id)
{
var widget = dijit.byId(element.id);
if(widget._isShown() === true)
{
widget.hide();
}
}
}
});
});
然而,这样做不起作用,因为dijit._underlay返回值表示未定义。我缺少什么来完成这个过程?或者,有更简单的方法吗?
更新:我已经更新了代码,现在它可以工作了。但是只有在我调用一个对话框的.show方法之后,它才能正常工作。看起来,在至少显示一个对话框之前,底层元素都没有被创建。