Window.open

Window.open

 

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:對窗口的一些控制屬性
o fullscreen:是否爲全屏模式(相當於F11的效果),可取值:yes/1、no/0
o directories:是否帶有目錄按鈕(例如收藏夾中的’鏈接’目錄),可取值同上
o location:是否帶有地址欄,可取值同上
o channelmode:是否爲影院模式,可取值同上
o menubar:是否帶有菜單條,可取值同上
o resizable:是否可以改變窗口的尺寸,可取值同上
o scrollbars:是否帶有滾動條,可取值同上
o status:是否帶有狀態欄,可取值同上
o titlebar:是否帶有標題欄,可取值同上
o toolbar:是否帶有快捷工具欄,可取值同上
o height:窗口高度
o width:窗口寬度
o top:距屏幕上邊緣的距離
o 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,高級部分

* 原窗口與彈出窗口之間的對象定位
o 概述:彈出窗口是我們在頁面編程中經常使用的一種方式,從互動角度分析,彈出窗口主要有兩種類型,一種是信息顯示窗口,例如人員信息、文章信息等等;另外 一種是繼續處理窗口,例如有些項目中,新建文章就是彈出窗口來完成的。對於信息顯示窗口,用戶看完之後關閉就可以了,但是對於繼續處理窗口,在用戶繼續處 理之後,往往需要與原窗口進行戶動,例如當在新窗口中創建一篇文章提交後,希望在彈出窗口關閉的同時,原窗口能夠刷新等等。
o 解決方式:上面方式的一個關鍵就是,如何獲取原窗口與彈出窗口對象,在DOM模型中我們可以明確的看到:
+ 原窗口中獲取彈出窗口對象:

var infoWindow=window.open ( “create.jsp” , “_blank” , “width=500,height=400″ ) ;
//infoWindow即代表了彈出窗口的window對象,例如在彈出窗口中有一個表單(myForm)和表單中的一個輸入控件(username),我們可以這樣操作:
infoWindow.document.myForm.username.value= “lisi” ;

o 彈出窗口中獲取原窗口對象:

如上例,在create.jsp中,我們可以如下操作來刷新原窗口
opener.location.reload () ;
//opener是DOM中提供的一個默認對象,表示的就是某個窗口的原窗口。

* wondow.open的緩存處理
o 概述:如果window.open鏈接的target指定的是一個已經存在了的窗口,尤其是原頁面中的一個frame和iframe的話,此時 window.open打開的鏈接頁面將不會從服務器重新請求,而是使用瀏覽器中相應的緩存頁面,至少ie給人的感覺就是這樣的,例如:

<input type= “button”  value= “顯示列表”  “window.open(’/myoa/users/list.jsp’,'main’,”)” />
<hr>
<iframe name= “main”  src= “/myoa/users/list.jsp”  width= “100%”  height= “600″  frameborder= “0″ ></iframe>
第一次方式該頁面是可以看到一個列表,那麼此時即使新創建一條記錄,那麼再點擊“顯示列表”按鈕時,會發現列表沒有發生變化,此時關閉瀏覽器重新進行發現列表出現了剛創建的那條記錄,可見緩存起了作用。

o 解決辦法:實驗中我們發現,中導向鏈接不會發生上面的現象,每次都是重新請求,同樣是上面的例子,使用下面的方式就是可以的:

<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工作。

來自http://www.cnblogs.com/sukiwqy/archive/2010/03/17/1687853.html

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