天天看點

【筆記】 《js權威指南》- 第14章 Window對象 14.8 多視窗和窗體

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;
           

繼續閱讀