使用DHTML,可以有兩種實現方法:
1.通過window.open方法以彈出頁面方式實現。2.通過window.showModalDialog方法以彈出對話方塊方式實現。(推薦)
一.通過window.open方法彈出對話方塊在寫JSP頁面的時候,有時需要點擊一個按鈕彈出一個輸入對話方塊,然後輸入一個值,確定後關閉對話方塊,把資料寫入資料庫,重新整理當前頁面。這樣的功能可以用JavaScript實現;不過如果用js內建的對話方塊的話,對話方塊不美觀,不如用一個JSP頁面來做對話方塊。 在頁面AddName.jsp裡要調用對話方塊,寫一個JSP頁面NewBox.jsp(用做對話方塊),然後在頁面AddName.jsp裡加上一段js代碼:/*用來開啟對話方塊頁面*/function openwindow(){
window.open ("NewBox.jsp","Sample","fullscreen=no,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no, copyhistory=no,width=350,height=140,left=200,top=300");
} /*在NewBox.jsp裡調用這個函數,用來重新整理AddName.jsp*/ function opensub(){
document.form1.submit();
} 在這裡要對window.open裡的參數做一下說明: fullscreen=no 視窗模式,yes為全螢幕模式 toolbar=no, 顯示工具條
location=no,顯示網址欄
directories=no,導航條
status=no,狀態條
menubar=no,菜單
scrollbars=no,捲軸
resizable=no,是否可以改變大小
copyhistory=no,曆史按鈕
width=350,寬
height=140'高
left=200,距離左邊200
top=300,距離頂端300這時要在NewBox.jsp裡加上一部分js代碼,下面是NewBox.jsp的代碼
<html>
<head >
<title>建立郵件夾輸入框</title>
<SCRIPT>
<!--
function bconfirm(){
opener.document.all['inboxname'].value=document.form1.inboxname.value;
opener.opensub();
window.close();
}
function bcancel(){
window.close();
}
-->
</SCRIPT>
</head>
<body bgcolor=#66CD00>
<FONT size=5>請輸入新郵件夾的名稱:</FONT>
<FORM method=post name=form1 action="">
<INPUT type=text name=inboxname size=35><p>
<INPUT type=button name=inputboxbt value=確定 onclick="bconfirm();">
<INPUT type=button name=inputboxbs value=取消 onclick="bcancel();">
</FORM>
</body>
</html>
在NewBox.jsp裡先給AddName.jsp裡的一個隱藏表單inboxname賦值,就是這句: opener.document.all['inboxname'].value=document.form1.inboxname.value; 然後調用AddName.jsp裡的一個js函數:opener.opensub(); 這樣AddName.jsp就會自動認可表單到Servlet接著重新整理頁面,這樣就完成了!
二.通過window.showModalDialog方法彈出對話方塊。(推薦)
仍然是在頁面AddName.jsp裡要調用對話方塊,寫一個JSP頁面NewBox.jsp(用做對話方塊),然後在頁面AddName.jsp裡加上一段js代碼: /*用來開啟對話方塊頁面,注意這回openwindow()函數裡的的方法是window.showModalDialog*/ function openwindow(){
window.showModalDialog("NewBox.jsp",window,"status:no;scroll:no;
dialogWidth:235px;dialogHeight:100px");
} /*在NewBox.jsp裡調用這個函數,用來重新整理AddName.jsp*/ function opensub(){
document.form1.submit();
}
對window.showModalDialog裡的參數簡單做一下說明: center : yes | no | 1 | 0 | on | off 指定對話方塊是否顯示於案頭正中。預設值為 yes 。
dialogHide : yes | no| 1 | 0 | on | off 指定當列印或預覽列印時對話方塊是否隱藏。僅僅當對話方塊是由被信任的程式開啟的時候此參數才可用。預設值為 no 。
edge : sunken | raised 指定對話方塊視窗邊框樣式為凹下還是凸起的。預設值為 raised 。
resizable : yes | no | 1 | 0 | on | off 指定對話方塊是否可以被使用者改變尺寸。預設值為 no 。
scroll : yes | no | 1 | 0 | on | off 指定對話方塊是否顯示捲軸。預設值為 yes 。
status : yes | no | 1 | 0 | on | off 指定對話方塊是否顯示狀態條。對於不被信任的對話方塊預設值為 yes 。對於被信任的對話方塊預設值為 no 。
unadorned : yes | no | 1 | 0 | on | off 指定對話方塊是否顯示 chrome 樣式邊框。僅僅當對話方塊是由被信任的程式開啟的時候此參數才可用。預設值為 no 。
另外,在NewBox.jsp的javaScript代碼bconfirm()方法中:
<SCRIPT>
<!--
function bconfirm(){
dialogArguments.addNameform.inboxname.value=document.form1.
inboxname.value;
dialogArguments.opensub();
window.close();
}
function bcancel(){
window.close();
}
-->
</SCRIPT>
注:addNameform為AddName.jsp中隱藏表單name,使用window.showModalDialog方法是要用dialogArguments傳遞參數。其他部分不變。