关于DOJO中dialog遮罩的问题

很久没写东西了,以前发表的文章也大多都是转载的,前段时间看到一篇文章,说开发人员为什么不喜欢写技术博客,感觉挺有感触的,大多数原因是解决了就该忙其他的事情了,不去管这些东西了,还有就是怕不够深入,写的不对,让人笑话。
    最近几天接到任务要解决一个DOJO中dialog的BUG,感觉弄了好几天很烦躁,也许是我技术比较烂,高手应该很容易解决,但是我希望能记录下来,能给同样碰到问题的人一些帮助,这样码的那么多字就不算白费。
    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",是不是完美解决了? 

posted on 2012-06-14 15:16 七孑 阅读(2696) 评论(0)  编辑  收藏 所属分类: DOJO


只有注册用户登录后才能发表评论。


网站导航:
 
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜