一、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!