关于DOJO中dialog遮罩的问题

阅读更多

本文转自:http://www.blogjava.net/chen45257211/articles/380786.html

 dialog是自带遮罩功能的,但是我们在使用的时候,有可能不需要遮罩这个东西,怎么把它去掉呢?如果使用的是dojox的dialog,modal属性直接可以去掉遮罩,但是DOJO1.7以后推荐使用DialogSimple,因为它继承了ContentPane。但是却没有了modal属性,怎么办?   有几种办法:
    1. dojo.byId("id").childNodes[0].style.display="none"; id是在页面上遮罩的id,可以都过firebug看到
    2.dojo.destroy('id'); id是你生成dialog的id
    3.dijit._underlay.hide();
    4.dijit._underlay.domNode.style.display = "none";
    第一种肯定不是最好的办法,因为id这个东西不是固定的,并且很有可能是系统自动生成的。第二种会出现新的问题,因为当你页面中存在很多个dialog时,他们都是共用一个遮罩的,这样其他的dialog如果还想使用遮罩就是不可能的了。第三种是我在网上看到的办法,但是很遗憾,会报错,原因找到了,是因为hide的时候有这一句this.bgIframe.destroy(),但是你关闭dialog时调用的hide方法又会销毁一次bgIframe,会显示找不到bgIframe。所以我进入了DialogUnderlay中的hide方法,发现主要的代码就是第四种方法!如果想要显示就使用dijit._underlay.domNode.style.display = "block",是不是完美解决了? 

 

你可能感兴趣的:(关于DOJO中dialog遮罩的问题)