1,基本描述
1.1 方法簽名:oNewWindow = window.open( sURL , sName , sFeatures, bReplace)
通過方法簽名可以看出,window.open在打開一個窗口(其url為sURL)后,將返回一個代表該窗口對象的一個變量
oNewWindow,如果打開不成功,則oNewWindow的值為null。同時為了對打開的窗口預先做一些控制,提供了
其他一些參數(sName、sFeatures、bReplace)可供選擇配置,下面將具體說明每個參數的含義
1.2 各參數的含義
- oNewWindow:被打開的窗口的對象
- sUrl:被打開窗口的url
- sName:在哪個窗口打開新的url鏈接,例如可以為_blank(新窗口)、_top(最外層窗口)等等
- sFeatures:對窗口的一些控制屬性
- fullscreen:是否為全屏模式(相當于F11的效果),可取值:yes/1、no/0
- directories:是否帶有目錄按鈕(例如收藏夾中的'鏈接'目錄),可取值同上
- location:是否帶有地址欄,可取值同上
- channelmode:是否為影院模式,可取值同上
- menubar:是否帶有菜單條,可取值同上
- resizable:是否可以改變窗口的尺寸,可取值同上
- scrollbars:是否帶有滾動條,可取值同上
- status:是否帶有狀態欄,可取值同上
- titlebar:是否帶有標題欄,可取值同上
- toolbar:是否帶有快捷工具欄,可取值同上
- height:窗口高度
- width:窗口寬度
- top:距屏幕上邊緣的距離
- left:距屏幕左邊緣的距離
- bReplace:如果在同一窗口打開新窗口,該值用于指定是否在history中替換原窗口的url鏈接,可取值:true/false
2,基本使用
- 在一個新窗口中打開某個鏈接link(/myoa/admin/manage.jsp)
window.open ( "/myoa/admin/manage.jsp" ) ;
或者
window.open ( "/myoa/admin/manage.jsp" , "_blank" ) ;
注意:這樣的話,每次執行都會打開一個新窗口,即使上次打開的新窗口未關閉,仍然會彈出新的
|
- 在指定的某個窗口中打開某個鏈接link(/myoa/admin/manage.jsp)
window.open ( "/myoa/admin/manage.jsp" , "myWiddown" ) ; //myWindow即為窗口的名稱
注意:如果myWindow窗口不存在,那么將會新彈出一個窗口,并將新窗口命名為myWindow,只要該窗口
不關閉,那么以后執行該open,彈出窗口均為這個已經存在的myWindow
另外,有一些窗口名稱已經被瀏覽器使用,具有特殊的含義,例如:_blank、_top、_parent、_self等
|
- 打開一個新窗口,要求窗口高度300px、寬度500px、不帶滾動條、不帶地址欄(/myoa/admin/manage.jsp)
window.open ( "/myoa/admin/manage.jsp" , "_blank" , "height=300,width=500,scrollbars=no,location=no" ) ;
注意:sFeatures這些參數之間是用逗號分隔的,而在window.showModalDialog中,是用分號進行分隔的,一定要注意!
|
3,高級部分
- 原窗口與彈出窗口之間的對象定位
- 概述:彈出窗口是我們在頁面編程中經常使用的一種方式,從互動角度分析,彈出窗口主要有兩種類型,一種是信息顯示窗口,例如人員信息、文章信息等等;另外一種是繼續處理窗口,例如有些項目中,新建文章就是彈出窗口來完成的。對于信息顯示窗口,用戶看完之后關閉就可以了,但是對于繼續處理窗口,在用戶繼續處理之后,往往需要與原窗口進行戶動,例如當在新窗口中創建一篇文章提交后,希望在彈出窗口關閉的同時,原窗口能夠刷新等等。
- 解決方式:上面方式的一個關鍵就是,如何獲取原窗口與彈出窗口對象,在DOM模型中我們可以明確的看到:
var infoWindow=window.open ( "create.jsp" , "_blank" , "width=500,height=400" ) ;
//infoWindow即代表了彈出窗口的window對象,例如在彈出窗口中有一個表單(myForm)和表單中的一個輸入控件(username),我們可以這樣操作:
infoWindow.document.myForm.username.value= "lisi" ;
|
如上例,在create.jsp中,我們可以如下操作來刷新原窗口
opener.location.reload () ;
//opener是DOM中提供的一個默認對象,表示的就是某個窗口的原窗口。
|
- wondow.open的緩存處理
- 概述:如果window.open鏈接的target指定的是一個已經存在了的窗口,尤其是原頁面中的一個frame和iframe的話,此時window.open打開的鏈接頁面將不會從服務器重新請求,而是使用瀏覽器中相應的緩存頁面,至少ie給人的感覺就是這樣的,例如:
<input type= "button" value= "顯示列表" onclick= "window.open('/myoa/users/list.jsp','main','')" />
<hr>
<iframe name= "main" src= "/myoa/users/list.jsp" width= "100%" height= "600" frameborder= "0" ></iframe>
第一次方式該頁面是可以看到一個列表,那么此時即使新創建一條記錄,那么再點擊“顯示列表”按鈕時,會發現列表沒有發生變化,此時關閉瀏覽器重新進行發現列表出現了剛創建的那條記錄,可見緩存起了作用。
|
- 解決辦法:實驗中我們發現,中導向鏈接不會發生上面的現象,每次都是重新請求,同樣是上面的例子,使用下面的方式就是可以的:
<a href= "/myoa/users/list.jsp" target= "main" >顯示列表</a>
<hr>
<iframe name= "main" src= "/myoa/users/list.jsp" width= "100%" height= "600" frameborder= "0" ></iframe>
|
不過有許多時候,我們不的不使用window.open到本頁面某個iframe的方式(以后你可能會碰到的),那么可以類這樣解決:
<input type= "button" value= "顯示列表" onclick= "document.getElementById('showlist').click()" />
<a href= "/myoa/users/list.jsp" target= "main" id= "showlist" style= "display:none" >顯示列表</a>
<hr>
<iframe name= "main" src= "/myoa/users/list.jsp" width= "100%" height= "600" frameborder= "0" ></iframe>
上面的找個例子比較簡單,在實際的項目中,在隱藏的link被觸發之前,還需要做許多的javascipt工作。
|
posted on 2009-06-15 21:23
飛翔天使 閱讀(543)
評論(0) 編輯 收藏 所屬分類:
javascript