windows.open()和window.showModalDialog()的使用方法

來源:互聯網
上載者:User

windows.open()用法簡介
一、window.open()支援環境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+
二、基本文法:
window.open(pageURL,name,parameters)
其中:
pageURL 為子視窗路徑
name 為子視窗控制代碼
parameters 為視窗參數(各參數用逗號分隔)
三、樣本:
<SCRIPT>
<!--
window.open ('page.html','newwindow','height=100,width=400,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')
//寫成一行
-->
</SCRIPT>
指令碼運行後,page.html將在新表單newwindow中開啟,寬為100,高為400,距屏頂0象素,屏左0象素,無工具條,無菜單條,無捲軸,不可調整大小,無地址欄,無狀態欄。
請對照。
上例中涉及的為常用的幾個參數,除此以外還有很多其他參數,請見四。
四、各項參數
其中yes/no也可使用1/0;pixel value為具體的數值,單位象素。
參數 | 取值範圍 | 說明
| |
alwaysLowered | yes/no | 指定視窗隱藏在所有視窗之後
alwaysRaised | yes/no | 指定視窗懸浮在所有視窗之上
depended | yes/no | 是否和父視窗同時關閉
directories | yes/no | Nav2和3的目錄欄是否可見
height | pixel value | 視窗高度
hotkeys | yes/no | 在沒功能表列的視窗中設安全退出熱鍵
innerHeight | pixel value | 視窗中文檔的像素高度
innerWidth | pixel value | 視窗中文檔的像素寬度
location | yes/no | 位置欄是否可見
menubar | yes/no | 功能表列是否可見
outerHeight | pixel value | 設定視窗(包括裝飾邊框)的像素高度
outerWidth | pixel value | 設定視窗(包括裝飾邊框)的像素寬度
resizable | yes/no | 視窗大小是否可調整
screenX | pixel value | 視窗距螢幕左邊界的像素長度
screenY | pixel value | 視窗距螢幕上邊界的像素長度
scrollbars | yes/no | 視窗是否可有滾動欄
titlebar | yes/no | 視窗題目欄是否可見
toolbar | yes/no | 視窗工具列是否可見
Width | pixel value | 視窗的像素寬度
z-look | yes/no | 視窗被啟用後是否浮在其它視窗之上

window.showModalDialog使用手冊
基本介紹:
showModalDialog() (IE 4+ 支援)
showModelessDialog() (IE 5+ 支援)
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="51js";
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="str";
</script>

windows.showModalDialog執行個體
實現功能簡介:在parent.aspx點擊圖片gorup.gif便會彈出Group.aspx視窗,在此頁面的dataGrid控制項中雙擊某一行資料,就會將這一行的"組合名稱"列的值填充到parent.aspx頁面的txtGoup文字框中。代碼如下:
parent。aspx 的html代碼:
//
<IMG  src="images/gorup.gif" onclick=getGroup(document.all.txtGroup); style="CURSOR: hand"  alt=請選擇組合 >
<script>   
 function getGroup(obj)
 {
    var valu=window.showModalDialog('Group.aspx',window,'dialogWidth=700px;dialogHeight=500px;status=no');
    var str;
    str="document.all." + obj.id;
    if (valu!==""&&valu!==undefined){eval(str).value=valu;}
 }
</script>
Group.aspx的html代碼:
<script language=javascript>
 function returnSelect(sel)
 {
  window.returnValue=sel;
  window.close();
 }
</script>
Group.aspx的cs代碼:
 private void dgGroup_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  {
   if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item )
   {
    e.Item.Attributes.Add("onmouseover","c=this.style.backgroundColor;this.style.backgroundColor='#9CCBF7';this.style.cursor='hand'");
    e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor=c");
    DataRowView drv = (DataRowView)e.Item.DataItem;
    e.Item.Attributes.Add("ondblclick","returnSelect('" + drv.Row["Name"].ToString() +"');");

 

防止aspx頁面在showmodeldialog情況下提交就重新開啟一個頁面:showmodaldialog開啟的頁面中在<head></head>之間加入一行:<base target="_self">

 

如何禁止模態視窗左側的滾動欄?

解決如下:
方法是在模態頁面的BODY樣式加:OVERFLOW: hidden; 即可禁止顯示.

BODY {
OVERFLOW: hidden; BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: 0px; BACKGROUND: #ffffff; PADDING-BOTTOM: 0px; MARGIN: 0px;  BORDER-LEFT: 0px; WIDTH: 100%; PADDING-TOP: 0px; BORDER-BOTTOM: 0px
}
什麼是模態視窗?什麼是非模態視窗?

答案如下:
模態視窗在傳統程式設計語言中很常見,就是開啟一個子視窗,如果這個子視窗不關閉,就不能操作它的父視窗。
當我們用showModelessDialog()開啟視窗時,不必用window.close()去關閉它,當以非模態方式[IE5]開啟時, 開啟對話方塊的視窗仍可以進行其他的操作,即對話方塊不總是最上面的焦點,當開啟它的視窗URL改變時,它自動關閉。而模態[IE4]方式的對話方塊始終有焦點(焦點不可移走,直到它關閉)。模態對話方塊和開啟它的視窗相聯絡,因此我們開啟另外的視窗時,他們的連結關係依然儲存,並且隱藏在使用中視窗的下面。

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/moon_f/archive/2009/06/08/4250608.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.