window.open

來源:互聯網
上載者:User

一、window.open()支援環境:

  JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+
二、基本文法:
  var win=window.open(pageURL,name,parameters)
  其中:
  pageURL 為子視窗路徑
  name 為子視窗控制代碼,win也為子視窗的window對象,注意區別
  parameters 為視窗參數(各參數用逗號分隔)

三、部分參數
  其中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 | 視窗被啟用後是否浮在其它視窗之上
      status | yes/no 狀態列是否可見

四、使用注意:

1、toolbar=0與toolbar='no'、toolbar=1與toolbar='yes'效果一樣

2、resizable='yes'與scrollbars='yes'都存在時,捲軸不會出現,必須resizable='no'或0

3、window.open()的頁面參數改變時,要關閉父IE視窗,重新開啟,才能見改變效果。難道其和showModal
Dialog()一樣,也是預先載入的?

開啟新視窗最大化解決方案:
問題致因:用window.open()方法開啟新視窗時,新視窗最大化按鈕不能用,不管你怎麼寫,都不可以最大化,而且視窗大小也不可以調整,加參數resizable=yes(no)這條語句根本就不起作用,不知道怎麼回事。

方法一:加入fullscreen="1"參數,這是目前最好的最簡單的解決辦法。例:Win=window.open"main.htm","","fullscreen=1,toolbar=0,location=0,directories=0,status=0,menubar=0,resizable=0,top=10000,left=10000");

方法二:用screen.availHeight 和screen.availwidth作為height、width參數值。但是screen.availheight和screen.availwidth並不是全屏,而是已有視窗的標題列、左邊部分地區以及工作列,所以開啟多個視窗時,新視窗越來越小。也許可以用數值計算控制這種縮小,不過沒能實現。
例1:
<script language=JavaScript><!--
var ww = window.screen.width;
var hh = window.screen.height - 20;
window.open("aa.asp", "","toolbar=no,location=no,directories=no,menubar=no,scrollbars=no,resizable=yes,status=no,top=0,left=0,width="+ww+",height="+hh);
// --></script>
例2:
新視窗中添加事件解決方案:
<script language=JavaScript type="text/javascript" >
if (window.screen){
window.moveTo(0, 0);
window.resizeTo(screen.availWidth,screen.availHeight);
}
</script>
經過修改:
    function     newWindow()
    {
    var pageURL="http://191.1.1.49:8080/servletprint/PrintViewerServlet?screenwidth="+(screen.width-15)+"&"+"screenheight="+screen.height;
    var mywin=window.open(pageURL,"","resizable='yes',status='yes',depended='yes',directories='no',location='no',menubar='no',titlebar='yes',toolbar='no'");
    mywin.moveTo(0, 0);
    mywin.resizeTo(screen.availWidth,screen.availHeight);
}
看到網上有用新視窗控制代碼的,不過在我的環境下測試時老報錯:“拒絕訪問”,不知何解。這個思路不知道行不行得通。這個方法和fullscreen一樣,沒有讓表單的真正的最大化,但是已經達到了最大的效果。
不過在maxthon中效果不好,前者無法在maxthon中最大化,因為是瀏覽器的最大化,頁面沒有最大化,
用後面其實大小是滿屏了,但是沒有真正最大化,
有人用
window.open("Default18.aspx","a"," channelmode =yes,menubar=yes,toolbar = yes,status = yes ");
chanelmode來解決此問題.
但是最大化後無法用resize後再次變大,另外連window的工作列都被蓋住了

方法三:實現真正最大化。例1:
</object> <object id="max" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<param name="Command" value="Maximize">
</object>
<input type=button value=最大化 onclick=max.Click()>
例2:視窗開啟自動最大化代碼
<!-- 視窗開啟後最大化 -->
<OBJECT id="max" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"><PARAM name="Command" value="Maximize"></OBJECT>
<script>
if(window.screenLeft!=0)
max.Click();
</script>
<!-- 視窗開啟後最大化結束 -->不過有的網友說這個東東在asp.net2.0中無效,不知道是不是。

方法四:如是在新視窗中實現視窗最大化,js實現方法,前面已經有幾種方法了。下面再介紹一方法
This.WindowState       =       Maximized!      
    三種狀態:Maximized!           Minimized!           Normal!
可以在被開啟的視窗的resize事件中添加如下命令:  
    this.windowstate     =     maximized!  
    即可或者
在被開啟的視窗的OPEN或ACTIVATE事件中添加如下命令:  
    this.windowstate     =     maximized! 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.