在案頭應用系統中,有時需要對當前開啟的表單模式化,即使用者只能進行當前的操作,禁止使用其它功能。Ext中Ext.Window的modal控制屬性可以很快捷很有效達到這一效果,但是在我做的Ext desktop中則出現了無法完全模式化的問題。
當設定Ext.Window的modal為true時,僅僅只會屏蔽掉當前案頭,而工作列還是可以操作
想去百度或者Google一下我都不知道這個該怎麼去寫關鍵字了,自力更生吧,自己動手豐衣足食。當然也只能去查看Ext2.2.1的API文檔了,逐一查看了Ext.Window的屬性介紹,最終將注意力集中到了manager控制屬性上,文檔說明如下:
manager : Ext.WindowGroup
A reference to the WindowGroup that should manage this window (defaults to Ext.WindowMgr).
每一個Ext.Window對象的manager預設就是Ext.WindowMgr,接著再看Ext.WindowMgr的介紹,找到zseed屬性:
zseed : Number
The starting z-index for windows (defaults to 9000)
我們知道z-index是用於檢索或設定對象的層疊順序的。回過頭來再看看modal的描述:
modal : Boolean
True to make the window modal and mask everything behind it when displayed, false to display it without restricting access to other UI elements (defaults to false).
也就是說顯示出來的window只會屏蔽掉所有z-index值小於它自身z-index值的元素。於是乎翻開desktop的css檔案,看到工作列的定義是這樣的:
#ux-taskbar {<br />background:transparent none;<br />height:30px;<br />margin:0;<br />padding:0;<br />position:relative;<br />z-index:12001;<br />}
zseed的預設值才是9000,而這裡工作列的z-index竟然是12001!修改方法不言而喻。