模態窗口和非模態窗口

   對話框一般分爲兩種類型:模態類型(modal)與非模態類型(modeless)。所謂模態對話框,就是指除非採取有效的關閉手段,用戶的鼠標焦點或者輸入光標將一直停留在其上的對話框。非模態對話框則不會強制此種特性,用戶可以在當前對話框以及其他窗口間進行切換。本文介紹如何使用JavaScript語言來創建這兩種類型的對話框、控制其大小和位置、改變其外觀以及在對話框間的數據傳遞。(引用)

一、創建模態和非模態對話框

創建模態對話框:(會緩存最近一次頁面的值,通過一些設置可繞過系統的判斷)
vReturnValue = window.showModalDialog(sURL [, vFreeArgument] [, sOrnaments]);
創建非模態對話框:(不會)

vReturnValue = window.showModelessDialog(sURL [, vFreeArgument] [, sOrnaments]);

· VReturnValue:對於showModalDialog(),它表示被打開的對話框窗口設置的returnValue屬性值。對於showModelessDialog(),它表示新窗口對象。
· VFreeArgument:這個參數可用於傳遞某種類型的數據到打開的對話框,數據可以是一個數值、字符串、數組或者一個對象類型。在新窗口中引用這個數值時,可通過新創建window對象的dialogArguments 屬性。
· SOrnaments:用這個參數指定新窗口的外觀。可選擇的窗口屬性有很多種,當有多種控制需求時,將相關內容用一個字符串連接起來,其間用分號隔開。以下是可選擇的屬性種類:
o dialogHeight: sHeight
o dialogLeft: sXpos
o dialogTop: sYpos
o dialogWidth: sWidth
o center: ( yes | no | 1 | 0 | on | off )
o dialogHide: ( yes | no | 1 | 0 | on | off )
o edge: ( sunken | raised )
o help: ( yes | no | 1 | 0 | on | off )
o resizable: ( yes | no | 1 | 0 | on | off )
o scroll: ( yes | no | 1 | 0 | on | off )
o status: ( yes | no | 1 | 0 | on | off )

二、控制對話框大小和位置

三、改變對話框外觀

四、從Noname1.html頁面傳遞數據到Noname2.html頁面

  • 傳遞對象類型數據

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>模態窗口和非模態窗口</TITLE>
<script language="javascript">
 var sColor="yyyy";
 var sName="xmddl369";
 function showModalWindow(){
   window.showModalDialog('Noname2.html',window,'dialogWidth:400px;dialogHeight:400px');
 }
 function showModellessWindow(){
  window.showModelessDialog('Noname2.html',window,'dialogWidth:400px;dialogHeight:400px;edge:sunken');
 }
 function update()
 {
  oColor.innerText = sColor;
 }
 document.write("sColor="+sColor+"<br>");
 document.write("sName="+sName+"<br>");
</script>
</HEAD>

<BODY>
<form>
<input type="button" name="button" value="打開一個模態窗口" onclick="showModalWindow()">
<input type="button" name="button" value="打開一個非模態窗口" onclick="showModellessWindow()">
<BR>
<P>輸入你最喜歡的顏色: <SPAN ID="oColor" STYLE="color:red;font-size:24">Yellow</SPAN></P>
</form>
</BODY>
</HTML>
-------------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<script language="javascript">
function getInfoAndUpdate() {
 var callerWindowObj = dialogArguments; //得到文檔的引用
 callerWindowObj.sColor = document.all("oEnterColor").value;
 callerWindowObj.update();
 }
function cancel() {
 var callerWindowObj = dialogArguments;
 callerWindowObj.sColor = "Yellow";
 callerWindowObj.update(); 
}
</script>
</HEAD>
<BODY>
<form>
輸入你最喜歡的顏色:<INPUT type="text" name="oEnterColor" ID="oEnterColor"><BR><BR>
<INPUT VALUE="Apply" TYPE=button onclick="getInfoAndUpdate();">
<INPUT VALUE="Ok" TYPE=button onclick="getInfoAndUpdate();window.close();">
<INPUT VALUE="Cancel" TYPE=button onclick="cancel();window.close();">

</form>
</BODY>
</HTML>

  • 傳遞數組引用類型數據

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>模態窗口和非模態窗口</TITLE>
<script language="javascript">
 var fruit=new Array();
 fruit[0]="蘋果";
 fruit[1]="桔子";
 fruit[2]="梨";
 fruit[3]="香蕉";
 function showModalWindow(){
   window.showModalDialog('Noname2.html',fruit,'dialogWidth:400px;dialogHeight:400px');
 }
 function showModellessWindow(){
  window.showModelessDialog('Noname2.html',fruit,'dialogWidth:400px;dialogHeight:400px;edge:sunken');
 }
</script>
</HEAD>

<BODY>
<form>
<input type="button" name="button" value="打開一個模態窗口" onclick="showModalWindow()">
<input type="button" name="button" value="打開一個非模態窗口" onclick="showModellessWindow()">
<BR>
</form>
</BODY>
</HTML>

------------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<SCRIPT LANGUAGE="JScript">
function deWrite(){
 var myobject=document.getElementById("ifruit");
 var myfruit=dialogArguments;

 for(count=0;count<myfruit.length;count++){
  var oOption = document.createElement("OPTION");
  oOption.text=myfruit[count];
  oOption.value="/count;
  myobject.add(oOption);
 }
}
</SCRIPT>
</HEAD>
<BODY>
<form>
<input" type="button" name="button" value="click me" onclick="deWrite()">
<br>增加水果:
<SELECT ID="ifruit" NAME="ifruit">
</SELECT>
</form>
</BODY>
</HTML>

  •  傳遞值類型數據

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>模態窗口和非模態窗口</TITLE>
<script language="javascript">
 function showModalWindow(){
   window.showModalDialog('Noname2.html',"xmddl",'dialogWidth:400px;dialogHeight:400px');
 }
 function showModellessWindow(){
  window.showModelessDialog('Noname2.html',"xmddl369",'dialogWidth:400px;dialogHeight:400px;edge:sunken');
 }
</script>
</HEAD>

<BODY>
<form>
<input type="button" name="button" value="打開一個模態窗口" onclick="showModalWindow()">
<input type="button" name="button" value="打開一個非模態窗口" onclick="showModellessWindow()">
<BR>
</form>
</BODY>
</HTML>

------------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<SCRIPT LANGUAGE="JScript">
function deWrite(){
 var names=dialogArguments;//
 document.write(names);
}
</SCRIPT>
</HEAD>
<BODY>
<form>
<input type="button" name="button" value="click me" onclick="deWrite()">
</form>
</BODY>
</HTML>

============================================

其中window.Open(url,,)的一點體會

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<script language="javascript">
 function showOpenWindow(){
  window.open('http://www.sohu.com','xmddl','height=600px,width=800px,toolbar=no,menubar=no,resizable=yes, scrollbars=yes, location=no, status=no');
 }
</script>
</HEAD>

<BODY>
<form>
 <input type="button" name="button" value="click me" onclick="showOpenWindow()">
</form>
</BODY>
</HTML>

//在Url的地方可以跟上一個.do的請求,基於struts架構時可以鏈接到某一個具體的頁面,體現了窗口作爲顯示的作用 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章