window.open()與window.showModalDialog區別
彈出窗口兩種方式:
1.window.showModalDialog:
var feature = "dialogWidth:615px;dialogHeight:505px;status:no;help:no;scroll:no;resizable:no;center:yes";
window.showModalDialog(url, Object(傳給彈出窗口的參數,可以是任何類型),feature)
決定窗口的外觀是第三個參數feature,其中center屬性指定為"yes",彈出窗口居中;
如果想手動指定彈出窗口的具體位置,去掉center屬性,
用dialogTop(彈出窗口上邊界居屏幕上的距離)
dialogLeft(彈出窗口左邊界居屏幕左的距離)屬性
如:(距離是px像素),這里手動指定彈出窗口位置居中
var iTop = (window.screen.availHeight-550)/2; //獲得窗口的垂直位置,550為彈出窗口的height;
var iLeft = (window.screen.availWidth-640)/2; //獲得窗口的水平位置,640為彈出窗口的width;
var feature = "dialogWidth:640px;dialogHeight:550px;status:no;help:no;scroll:no;resizable:no;dialogTop:'+iTop+';dialogLeft:'+iLeft+';";
2.window.open:
var feature = "width=615,height=505,menubar=no,toolbar=no,location=no,scrollbars=no,status=no,modal=yes"
window.open(url, "name(只能為字符串,不能傳window)", feature)
手動指定彈出窗口位置,屬性top:(彈出窗口上邊界居屏幕上的距離)
屬性left:(彈出窗口左邊界居屏幕左的距離)
下面指定彈出窗口位置居中(這種方式沒有center屬性):
var iTop = (window.screen.availHeight-550)/2; //獲得窗口的垂直位置,550為彈出窗口的height;
var iLeft = (window.screen.availWidth-640)/2; //獲得窗口的水平位置,640為彈出窗口的width;
var feature = "width=615,height=505,top="+iTop+",left="+iLeft+",menubar=no,toolbar=no,location=no,scrollbars=no,status=no,modal=yes";
子窗口調用父窗口的東東(控件或者方法):
1. window.open打開的子窗口有window.opener屬性
子窗口通過window.opener.xxxx獲得父窗口的東東。
如:window.opener.document.getElementById("userName");得到父頁面的控件。
window.opener.fresh();調用父頁面的js方法。
2. window.showModalDialog:不支持window.opener,
子窗口通過window.dialogArguments.xxxx獲得父窗口的東東。
父窗口通過showModalDialog(url,para,feature)第二個參數para傳參數給子窗口,
子窗口通過window.dialogArguments獲得父窗口穿過來的東西。
如:這里傳父頁面的window過去
父頁面:showModalDialog(url,window,feature)
子頁面:var name = window.dialogArguments.document.getElementById("userName").value;得到父頁面的控件。
var name = window.dialogArguments.fresh();調用父頁面的方法。
這里的window.dialogArguments里的window代表父頁面的window,它是通過showModalDialog方法的第二個參數window傳過來的,
當然也可以傳數組或其它變量。
