window對象中有多個內置的對話框函數,包括模式對話框showModalDialog、非模式對話框showModeless、警告對話框、確認對話框、格式對話框。
模式對話框就是對話框彈出后,不能操作父對話框,關閉之后才可以繼續操作父對話框。
而非模式對話框在彈出之后,可以繼續操作父對話框。
另外,代碼中還包含了用子對話框中的數據,修改父對話框中的數據。
下面的代碼只支持在ie瀏覽器運行,不支持在谷歌的Chrome瀏覽器,因為chrome瀏覽器現在已經不支持不支持模式、非模式對話框了。
由此想到,在前端開發中,最好不要直接調用對話框函數,而是進行一個封裝,這樣在瀏覽器不支持這些函數,或者在解決瀏覽器兼容性問題時,直接替換封裝函數內部的這些函數,而不是去代碼中一個一個的改,省時省力。
說句題外話,谷歌在瀏覽器的設計上,根本不會考慮你的感受,實力決定一切。
父窗口代碼:
<!DOCTYPE HTML ><HTML> <HEAD> <meta charset="gb2312"> <script language="javascript"> var sUsername = ""; function updateUsername() { if(sUsername == "") sUsername = '小咪'; showName.innerHTML = "<font color='red'>"+sUsername+"</font>"; } function showDialog(f) { var sFeatures = "dialogWidth:800px;dialogHeight:560px;status:off;help:no"; switch(f) { case 1: //第2個參數傳入了window對象 window.showModalDialog("js window對象:非模式-模式窗口.html",window,sFeatures); break; case 2: window.showModelessDialog("js window對象:非模式-模式窗口.html",window,sFeatures); break; case 3: alert("alert對話框!"); break; case 4: var r; r = confirm("請確認!"); break; default: var rr; rr = PRompt("請輸入用戶名:","123"); //第2個參數為默認值 inputValue.innerText = rr; //設置了id才能這么直接賦值 } } </script> </HEAD> <BODY onload="updateUsername();"> <h1>window對象的對話框</h1> <hr> 用戶名:<span id="showName"></span> <br> <hr> 輸入密碼:<span id="inputValue"></span> <form> <input type="button" value="模式對話框" onclick="showDialog(1);"> <input type="button" value="非模式對話框" onclick="showDialog(2);"> <input type="button" value="警告對話框" onclick="showDialog(3);"> <input type="button" value="確認對話框" onclick="showDialog(4);"> <input type="button" value="提示對話框" onclick="showDialog(5);"> </form> </BODY></HTML>子窗口:<!DOCTYPE HTML><HTML> <HEAD> <meta charset="gb2312"> <script language="Javascript"> //通過dialogArguments屬性,獲取傳入的調用者的window對象. //修改調用者window對象中的變量和函數 function sendUsername() { //window對象的dialogArguments屬性獲取調用者傳入的參數 var callWin = window.dialogArguments; //通過設置name屬性,可以用下面的方式引用值 callWin.sUsername = document.Data.username.value; callWin.updateUsername(); } </script> </HEAD> <BODY> <form name="Data"> 用戶名:<input type="text" name="username"><br> <input type="button" value="應用" onclick="sendUsername();"> <input type="button" value="確定" onclick="sendUsername();window.close();"> <input type="button" value="取消" onclick="window.close();"> </form> </BODY></HTML>
新聞熱點
疑難解答