關于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 七孑 閱讀(2708) 評論(0) 編輯 收藏 所屬分類: DOJO