在傳統的WINDOWS EXE程序中,模態對話框經常出現。例如,寫字板程序(WORDPAD.EXE)中的“查看/選項(O)...”菜單被點中后,跳出“選項”對話框,用戶一定要響應該對話框,如果該對話框不關閉,是無法回到主窗口的。這經常被應用于要求用戶輸入多個參數的場合。我們在瀏覽器中也可以簡單地實現該功能。 ---- 在IE瀏覽器中,要求用戶輸入可以使用VBScript的INPUTBOX函數、或者J Script的window.prompt方法,但是界面都比較單調,并且只能傳遞一個參數,而用DHTML來實現就靈活多了。 ---- 1. 基本語法 ---- window對象有一個方法稱為showModalDialog,我們可以在頁面按鈕的onclick中寫如下代碼: < BUTTON onclick="window.showModalDialog ('dialog.htm')" >Search< /BUTTON > ---- 系統會在新窗口中打開dialog.htm頁面,并且等待用戶響應,如果用戶不響應該頁面,那么主頁面將得不到光標。 ---- 在dialog.htm中設置window對象的returnValue屬性,就可以讓主頁面得到返回值。例如,在頁面的確定按鈕的onclick中寫: window.returnValue = window. document.all.iptPeopleID.value ---- 將輸入框iptPeopleID的值賦給window對象的returnValue屬性。在主頁面中就可以得到這個值: var str = showModalDialog("dialog1.htm") ---- 2. 傳遞初始化值 ---- 如果要向模態頁面中傳遞初始化值,可以在主頁面中用如下語句: var cSearchValue=showModalDialog ('dialog.htm', 'ABC') 在dialog.htm中使用window.dialogArguments 屬性可以得到'ABC'。例如: < SCRIPT FOR=window EVENT=onload LANGUAGE="JScript" > if (window.dialogArguments != null) window.document.all.iptPeopleID.value = window.dialogArguments; < /SCRIPT > ---- 3. 傳遞多個數值 ---- 如果要向模態頁面中傳遞多個參數,可以先在主頁面中定義一個對象, function myDialog() { var str1; var str2; } ---- 顯示模態頁面之前初始化該對象,然后調用showModalDialog方法。 function WelcomeYou(iniStr1,iniStr2) { myDialog.str1 = iniStr1; myDialog.str2 =iniStr2 ; if (showModalDialog("dialog2.htm", myDialog) ==false) //將對象傳入 ...... ---- 在模態頁面中,可以用這樣的代碼 window.document.all.iptID.value= window.dialogArguments.str1 來引用數值,或者用這樣的代碼對之賦值 window.dialogArguments.str1 = window.document.all.iptID.value ---- 完整例程如下: ---- 對于只傳遞一個參數的情況,見:Main1.htm和dialog1.htm。 ---- 對于傳遞多個參數的情況,見:Main2.htm和dialog2.htm。 父窗體: dim xxx '返回值 dim yyy '傳到子窗體的參數 var xxx = ShowModalDialog('xxx.asp','yyy','dialogWidth:100px;DialogHeight=290px;status:no') 子窗體: dim yyy '從父窗體傳來的參數 dim xxx '傳回父窗體的參數 yyy = window.dialogArguments xxx = window.returnValue 本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/liang4571231/archive/2009/04/29/4135316.aspx