window.showModalDialog()方法用來創建一個顯示HTML內容的模態對話框。
window.showModelessDialog()方法用來創建一個顯示HTML內容的非模態對話框。
使用方法:
vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures])
vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures])
參數說明:
sURL--必選參數,類型:字符串。用來指定對話框要顯示的文檔的URL。
vArguments--可選參數,類型:變體。用來向對話框傳遞參數。傳遞的參數類型不限,包括數組等。對話框通過window.dialogArguments來取得傳遞進來的參數。
sFeatures-- 可選參數,類型:字符串。用來描述對話框的外觀等信息,可以使用以下的一個或幾個,用分號“;”隔開。
1.dialogHeight :對話框高度,不小於100px,IE4中dialogHeight 和 dialogWidth 默認的單位是em,而IE5以上是px,為方便其見,在定義modal方式的對話框時,用px做單位。
2.dialogWidth: 對話框寬度。
3.dialogLeft: 離屏幕左的距離。
4.dialogTop: 離屏幕上的距離。
5.center: {yes | no | 1 | 0 }:窗口是否居中,默認yes,但仍可以指定高度和寬度。
6.help: {yes | no | 1 | 0 }:是否顯示幫助按鈕,默認yes。
7.resizable: {yes | no | 1 | 0 } 〔IE5+〕:是否可被改變大小。默認no。
8.status: {yes | no | 1 | 0 } 〔IE5+〕:是否顯示狀態欄。默認為yes[ Modeless]或no[Modal]。
9.scroll:{ yes | no | 1 | 0 | on | off }:指明對話框是否顯示滾動條。默認為yes。
下面幾個屬性是用在HTA中的,在一般的網頁中一般不使用。
10.dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印預覽時對話框是否隱藏。默認為no。
11.edge:{ sunken | raised }:指明對話框的邊框樣式。默認為raised。
12.unadorned:{ yes | no | 1 | 0 | on | off }:默認為no。
參數傳遞:
1.要想對話框傳遞參數,是通過vArguments來進行傳遞的。類型不限制,對於字符串類型,最大為4096個字符。也可以傳遞對象,例如:
-------------------------------
parent.htm
<script>
var obj = new Object();
obj.name="i5tt";
window.showModalDialog("modal.htm",obj,"dialogWidth=200px;dialogHeight=100px");
</script>
modal.htm
<script>
var obj = window.dialogArguments
alert("您傳遞的參數為:" + obj.name)
</script>
-------------------------------
2.可以通過window.returnValue向打開對話框的窗口返回信息,當然也可以是對象。例如:
------------------------------
parent.htm
<script>
str =window.showModalDialog("modal.htm",,"dialogWidth=200px;dialogHeight=100px");
alert(str);
</script>
modal.htm
<script>
window.returnValue="http://www.i5tt.com/";
</script>
將參數傳遞與返回結果結合在一起的實例
ParentPage.aspx
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script language="JavaScript" type="text/javascript">
function openwindow() {
var obj = new Object();
obj.value = "3";
obj.name = "4";
obj.sew = "5";
str =window.showModalDialog("ChildPage.aspx",obj,"dialogWidth=200px;dialogHeight=100px");
alert(str);
}
function openModelessDialog() {
var obj = new Object();
obj.value = "3";
obj.name = "4";
obj.sew = "5";
str = window.showModelessDialog("ChildPage.aspx", obj, "dialogWidth=200px;dialogHeight=100px");
alert(str);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="button" id="btnOpen" value="打開模態窗口" onclick="openwindow();" />
<input type="button" id="Button1" value="打開非模態窗口" onclick="openModelessDialog();" />
</div>
</form>
</body>
</html>
ChildPage.aspx
- <html xmlns="http://www.w3.org/1999/xhtml">
-
<head runat="server">
<title></title>
<script language="javascript" type="text/javascript">
function getArguments() {
var obj = window.dialogArguments
alert("您傳遞的參數為:" + obj.value)
}
function windowclose() {
window.returnValue = "childPage.Close";
}
</script>
</head>
<body onunload="windowclose();">
<form id="form1" runat="server">
<div>
<input type="button" id="btnOpen" value="打開窗口" onclick="getArguments();" />
<input type="button" id="btnClose" value="關閉窗口" onclick='self.close(); ' />
</div>
</form>
</body>
</html>
open函數語法
window.open(url,name,features,replace);
open函數參數說明
- url -- 要載入窗體的URL
- name -- 新建窗體的名稱(也可以是HTML target屬性的取值,目標)
- features -- 代表窗體特性的字符串,字符串中每個特性使用逗號分隔
- replace -- 一個布爾值,說明新載入的頁面是否替換當前載入的頁面,此參數通常不用指定
open函數name參數說明
name用於設置彈出窗體的名稱,如果使用已有的窗體或框架名稱作為name參數,那么url網址將在這個窗體或框架頁面載入
例如:
<ahref="http://www.dreamdu.com/"target="dreamdu">使用HTML連接建立一個頁面</a><ahref="#"onclick="window.open('http://www.dreamdu.com/xhtml/','dreamdu');">使用JavaScript在上面已經建立連接的頁面載入HTML教程</a>
首先使用普通HTML鏈接打開一個頁面(target名為dreamdu),之后使用open函數打開另一個頁面,瀏覽器首先要查找是否有名稱為dreamdu的窗體,如果有,就在這個窗體中加載夢之都HTML教程網址。否則新建一個名稱為dreamdu的窗體並加載夢之都HTML教程網址
open函數默認的打開窗體的方式為target的_blank彈出方式,因此頁面都將以彈出的方式打開
open函數features參數說明
如果不使用第三個參數,將打開一個新的普通窗口
| 參數名稱 | 類型 | 說明 |
|---|---|---|
| height | Number | 設置窗體的高度,不能小於100 |
| left | Number | 說明創建窗體的左坐標,不能為負值 |
| location | Boolean | 窗體是否顯示地址欄,默認值為no |
| resizable | Boolean | 窗體是否允許通過拖動邊線調整大小,默認值為no |
| scrollable | Boolean | 窗體中內部超出窗口可視范圍時是否允許拖動,默認值為no |
| toolbar | Boolean | 窗體是否顯示工具欄,默認值為no |
| top | Number | 說明創建窗體的上坐標,不能為負值 |
| status | Boolean | 窗體是否顯示狀態欄,默認值為no |
| width | Number | 創建窗體的寬度,不能小於100 |
特性字符串中的每個特性使用逗號分隔,每個特性之間不允許有空格
open函數返回值
新建立的window對象
猴子提示: 不建議使用彈出窗體,HTML彈出窗體
示例
window.open("http://www.dreamdu.com/","dreamduwin","width=500,height=300,left=10,top=20,location=yes,status=yes");
新建一個寬度為500像素,高度為300像素,距離屏幕左上角水平偏移10像素,垂直偏移20像素,有地址欄與狀態欄的窗體
varoWin=window.open("http://www.dreamdu.com/","dreamduwin");oWin.resizeTo(800,600);//重新設置窗體大小oWin.moveTo(50,50);//移動窗體oWin.close();//關閉窗體
window.open函數新建立窗體后會返回新建窗體的window對象,通過此對象可以控制窗體(移動,改變大小,關閉)
<inputtype="button"value="在新窗口中打開夢之都!"onclick="window.open('http://www.dreamdu.com/', 'dreamduwin', 'width=500,height=300,left=10,top=20,location=yes,status=yes');"/>
JavaScript opener數示例
<script type="text/javascript">
function f4(){
open("ab.html","_blank","width=500,height=300,");
}
</script>
<input type="button" value="f6" onclick="f6()">
<div id="ddv"></div>
<script type="text/javascript">
function f10(){
opener.f5();
}
function f9(){
opener.document.getElementById("ddv").innerHTML="gaile";
}
</script>
<input type="button" value="gai" onclick="f9()">
<input type="button" value="gai" onclick="f10()">
