window.open打開新窗口 參數


1,基本描述

       oNewWindow = window.open( sURL , sName , sFeatures, bReplace)   

  window.open在打開一個窗口(其url為sURL)后,將返回一個代表該窗口對象的一個變量oNewWindow,如果打開不成功,則oNewWindow的值為null。同時為了對打開的窗口預先做一些控制,提供了其他一些參數(sName、sFeatures、bReplace)可供選擇配置,下面將具體說明每個參數的含義

  * 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,高級部分

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

    解決方式:上面方式的一個關鍵就是,如何獲取原窗口與彈出窗口對象,在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中提供的一個默認對象,表示的就是某個窗口的原窗口。

 

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

    例如:

      <input type=“button” value=“顯示列表” onclick=“window.open(’/myoa/users/list.jsp’,'main’,”)” />

      <iframe name=“main” src= “/myoa/users/list.jsp” width= “100%” height= “600″  frameborder="0″ ></iframe>

      第一次訪問該頁面是可以看到一個列表,那么此時即使新創建一條記錄,那么再點擊“顯示列表”按鈕時,會發現列表沒有發生變化,此時關閉瀏覽器重新進行發現列表出現了剛創建的那條記錄,可見緩存起了作用。

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

        <a href= “/myoa/users/list.jsp” target= “main” >顯示列表</a>
        <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>
        <iframe name=”main” src=”/myoa/users/list.jsp” width=”100%” height=”600″ frameborder=”0″></iframe>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM