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;