1.Window.open();
參數1: 在新視窗中顯示的url, 預設值about:blank
參數2: 新視窗的名字,如果是已經存在的并且正在使用,那麼會跳轉到那個視窗,預設值為"_blank"
參數3: 非标準,設定一些視窗屬性;
參數4: 隻有當第二個參數命名是一個已經存在的視窗才有效,true的話替換曆史記錄的目前條目,預設false是建立一個新的曆史記錄;
傳回: 建立視窗的window對象。注意該對象收到同源政策限制,在非同源情況下大多數屬性是無法通路的。
window.opener記錄打開它的window對象。
2.Window.close();
通常隻允許自動關閉由自己JS代碼建立的視窗;
需要關閉其他視窗可以設定一個彈窗讓使用者确認關閉操作;
子窗體的close調用不會起作用;
當被引用的視窗關閉,該對象的closed屬性為true, document屬性為null。
3.窗體之間的關系:
(1).self或者window引用視窗或窗體自己;
(2).parent屬性引用包含他的視窗或窗體的window對象,在頂級視窗中parent就是自身;
(3).top屬性引用包含或引用自己的祖先視窗。
(4).通過iframe的contentWindow屬性獲得窗體的window對象;
(5).通過window對象的frameElement獲得窗體的iframe元素;
var elt = document.getElementById("f1");
var win = elt.contentWindow;
win.frameElement === elt;
//頂級視窗不是iframe元素
window.frameElement === null;
(6).視窗對象的frames屬性:儲存子窗體的window對象的類數組。比如子窗體通過parent.frames[1]來通路兄弟窗體。
(7).iframe定義id時,其全局變量是window對象并不是元素本身,是以可以直接使用window.idName來擷取子窗體。
(8).可以用window直接代替frames屬性:e.g. window[0], window.length;
4.視窗窗體互動:
var s = new Set();
var s = new parent.Set();
由于可以引用另一個視窗或者窗體的window對象,可以調用對方的變量以及函數等。注意,兩個js的源文檔必須是同源的。
//在主窗體中
var i = 3;
//在子窗體中改變主窗體的i
parent.A.i = 4;