(在《Javascript Bible》6th中讲到)一个页面看作一组相关联的对象集合,window对象是顶层的对象,所有的其他对象都可以直接或间接地被window引用。也就是说,在页面中所有的内容,都被包含在window对象中,那么通过Javascript脚本,可以操控页面中的所有内容了。
一个页面,可以打开另外一个页面,前者被称为主窗口(打开者),后者叫副窗口。比如主窗口页面是main.html,副窗口页面是new.html。
var newWindow = window.open("new.html", "", "width=400,height=300");
◆主副窗口如何互访呢?
答案在于opener对象。opener对象其实指向了主窗口window对象,这样就可以访问主窗口的所有对象了。
(main.html)主访问副:newWindow.document.getElementById("new_id"); // newWindow代表了副窗口
(new.html)副访问主:opener.document.getElementById("main_id"); // opener代表了主窗口,也即打开者
◆主窗口等待副窗口关闭,并刷新主窗口。
以下代码写入main.html中
var newWindow;
var timer;
function openWindow(url) {
newWindow = window.open(url, "", "width=400,height=300,resizable=yes");
timer = setInterval("updateAfterClose()", 1000);
}
function updateAfterClose() {
if(newWindow.closed == true) {
clearInterval(timer);
self.location.reload(); // 主窗口刷新
return;
}
}