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