IE中非模式對話方塊(showModelessDialog)應用 (轉)

worldblog發表於2008-01-22
IE中非模式對話方塊(showModelessDialog)應用 (轉)[@more@]

非對話方塊是IE的一種視窗形式,開啟非模式對話方塊後,在其被關閉之前,主調視窗不會繼續解析其後的htm程式碼,同時主調視窗也不會被選中。

:namespace prefix = o ns = "urn:schemas--com::office" />

主調視窗與非模式視窗的資訊傳遞

1.傳遞方式

vReturnValue = window.showModelessDialog ( sURL [, vArguments] [, eatures] )

主調視窗透過showModelessDialog方法的第二個引數 vArguments 向非模式視窗傳遞引數,該引數可以是陣列,也可以是。

非模式視窗透過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");

非模式視窗程式碼如下,即可接收主調視窗的視窗物件

  var sData = window.dialogArguments;

 

接著就可以操作主調視窗的任意變數和函式了,如下:

  sData.sUserName = ‘Value from ModelessDialog’; // sUserName是主調視窗的全域性變數

  sData.fnUpdate(); //fnUpdate是主調視窗的函式,在該函式中對sUserName變數做處理

這種方式下,主調視窗可以不透過普通返回值方式取得非模式視窗設定的數值

 

備註:

將主調視窗的Window物件傳入非模式視窗是一種很靈活的操作手段。但在實踐中發現,視窗物件只能是主調視窗自己的,你不能透過Dom物件結構,將其他幀頁面(非主調視窗)的Window物件傳入。但在非模視窗中可以根據傳入的主調視窗的Window物件,透過Dom物件結構引用到非主調視窗的任何物件。

 

關於非模式對話方塊的引數設定sFeatures見

/refs/showModelessDialog.htm">


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998142/,如需轉載,請註明出處,否則將追究法律責任。

相關文章