1. 程式人生 > >window.showModalDialog模態視窗引數說明

window.showModalDialog模態視窗引數說明

Window.ShowModalDialog的引數問題(父窗體向子窗體傳值)

  create date:2009-5-12
  description:window.showModalDialog開啟子視窗並重新整理主頁面
  param strUrl:子頁面路徑
  param width:子頁面顯示寬度
  param height:子頁面顯示高度

------------------------------------------------------------*/
function openDialog(strUrl,width,height)
{       
     window.showModalDialog(strUrl,window,'dialogWidth:'+width+'px;dialogHeight:'+height+'px;center:yes;status:no;scroll:off;');
     window.location.href = location.href;
     return false;
}
   
function openDialogEmail(strUrl,width,height)
{       
     window.showModalDialog(strUrl,window,'dialogWidth:'+width+'px;dialogHeight:'+height+'px;center:yes;status:no;scroll:yes;');
     return false;

   

基本介紹:
      showModalDialog()                     (IE 4+ 支援)
      showModelessDialog()                 (IE 5+ 支援)
      window.showModalDialog()           方法用來建立一個顯示HTML內容的模態對話方塊。
      window.showModelessDialog()         方法用來建立一個顯示HTML內容的非模態對話方塊。
使用方法:
      vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures])
      vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures])
引數說明:
    sURL           --   必選引數,型別:字串。用來指定對話方塊要顯示的文件的URL。
    vArguments   --   可選引數,型別:變體。用來向對話方塊傳遞引數。傳遞的引數型別不限,包括
陣列等。
對話方塊通過window.dialogArguments來取得傳遞進來的引數。
    sFeatures     --   可選引數,型別:字串。用來描述對話方塊的外觀等資訊,可以使用以下的
一個或幾個,用分號“;”隔開。
----------------
1.   dialogHeight:   對話方塊高度,不小於100px
2.   dialogWidth:   對話方塊寬度。
3.   dialogLeft:   離螢幕左的距離。
4.   dialogTop:   離螢幕上的距離。
5.   center:       { yes | no | 1 | 0 } :         是否居中,預設yes,但仍可以指定高度和寬度。
6.   help:         {yes | no | 1 | 0 }:           是否顯示幫助按鈕,預設yes。
7.   resizable:     {yes | no | 1 | 0 } [IE5+]:   是否可被改變大小。預設no。
8.   status:       {yes | no | 1 | 0 } [IE5+]:   是否顯示狀態列。預設為yes[ Modeless]或no[Modal]。
9.   scroll:       { yes | no | 1 | 0 | on | off }:是否顯示滾動條。預設為yes。

下面幾個屬性是用在HTA中的,在一般的網頁中一般不使用。
10.   dialogHide:{ yes | no | 1 | 0 | on | off }:在列印或者列印預覽時對話方塊是否隱藏。預設為no。
11.   edge:{ sunken | raised }:指明對話方塊的邊框樣式。預設為raised。
12.   unadorned:{ yes | no | 1 | 0 | on | off }:預設為no。


引數傳遞:
1.   要想對話方塊傳遞引數,是通過vArguments來進行傳遞的。型別不限制,對於字串型別,最大
為4096個字元。也可以傳遞物件,例如:
-------------------------------
parent.htm
<script>
      var obj = new Object();
      obj.name="51js";
      window.showModalDialog("modal.htm",obj,"dialogWidth=200px;dialogHeight=100px");
</script>
modal.htm
<script>
      var obj = window.dialogArguments
      alert("您傳遞的引數為:" + obj.name)
</script>
-------------------------------
2.   可以通過window.returnValue向開啟對話方塊的視窗返回資訊,當然也可以是物件。例如:
------------------------------
parent.htm
<script>
      str =window.showModalDialog("modal.htm",,"dialogWidth=200px;dialogHeight=100px");
      alert(str);
</script>
modal.htm
<script>
      window.returnValue="

http://homepage.yesky.com";
</script>

用window.showModalDialog 或者window.showModelessDialog開啟一個模式視窗後,和父視窗的一些互動問題。
要進行互動操作的前提,在呼叫showModalDialog或者showModelessDialog方法的時候,第二個引數傳window,如:


window.showModelessDialog('filename.htm',window,'dialogWidth=200px;dialogHeight=250px;')



接下來,就是取得父視窗的一些資料和方法,這是經常會用的,父視窗取子視窗的引數一般通過returnValue就可以搞定了~


//取得父視窗的JS變數 var
window.dialogArguments.var;
//獲得父視窗的物件和屬性
window.dialogArguments.form1.name.value ;

//火狐不支援上面的方法需要用下面的方法
window.dialogArguments.document.getElementById("name").value ;
//呼叫父視窗的方法 fun
window.dialogArguments.fun() ;

如果出現彈出新的頁面,可以在<head></head>之間加入下列程式碼:

    <base target="_self"></base>
但是有個問題,在子視窗中的事件響應無法呼叫父視窗的方法,


<button onClick='window.dialogArguments.fun()'>調父視窗方法</button>