IE中非模式對話框(showModelessDialog)應用 [轉]
非模式對話框是IE的一種窗口形式,打開非模式對話框后,在其被關閉之前,主調窗口不會繼續解析其后的htm代碼,同時主調窗口也不會被選中。
主調窗口與非模式窗口的信息傳遞
1.函數調用傳遞方式
vReturnValue = window.showModelessDialog ( sURL [, vArguments] [, sFeatures] )
主調窗口通過showModelessDialog方法的第二個參數 vArguments 向非模式窗口傳遞參數,該參數可以是數組,也可以是DOM對象。
非模式窗口通過window.dialogArguments 來提取傳遞過來的參數,若是數組,則用window.dialogArguments[i]來表示數組的第i個參數
非模式窗口通過window.returnValue向主調窗口傳回值,這個值作為showModelessDialog 方法的返回值被主調窗口接收。
2.窗口操作傳遞方式
非模式窗口通過主調窗口傳遞過來window對象直接操縱主調窗口的元素
此時showModelessDialog 需要將主調窗口的 window 對象作為參數傳出,在非模式窗口中即可取得主調窗口的窗口參考,用腳本可以直接對它操縱。
如主調窗口的調用代碼如下:
showModelessDialog ("myDialog.htm",window,"status:false;dialogWidth:300px;dialogHeight:300px;edge:Raised; enter: Yes; help: No; resizable: No; status: No");
非模式窗口JScript代碼如下,即可接收主調窗口的窗口對象
? var sData = window.dialogArguments;
?
接著就可以操作主調窗口的任意變量和函數了,如下:
? sData.sUserName = ‘Value from ModelessDialog’; // sUserName是主調窗口的全局變量
? sData.fnUpdate(); //fnUpdate是主調窗口的函數,在該函數中對sUserName變量做處理
這種方式下,主調窗口可以不通過普通返回值方式取得非模式窗口設定的數值
?
備注:
將主調窗口的Window對象傳入非模式窗口是一種很靈活的操作手段。但在實踐中發現,窗口對象只能是主調窗口自己的,你不能通過Dom對象結構,將其他幀頁面(非主調窗口)的Window對象傳入。但在非模窗口中可以根據傳入的主調窗口的Window對象,通過Dom對象結構引用到非主調窗口的任何對象。
?
關于非模式對話框的參數設置sFeatures見
http://msdn.microsoft.com/workshop/samples/author/dhtml/refs/showModelessDialog.htm
posted on 2006-12-06 14:18 mlw2000 閱讀(285) 評論(0) 編輯 收藏 所屬分類: JavaScript