window.open()
例如A页面利用window.open弹出了B页面窗口,B又通过window.open弹出了C页面,但是在关闭时刷新C页面要刷新B页面。可以通过opener引用B页面来刷新。
opener即谁打开我的,比如A页面利用window.open弹出了B页面窗口,那么A页面所在窗口就是B页面的opener,在B页面通过opener对象可以访问A页面。
window.showModalDialog()
例如:A页面利用window.showModelDialog()弹出了B页面窗口,B页面又通过window.showModelDialog()弹出了C页面,但是在关闭C页面时要刷新B页面,这就要比window.open要得杂些了,因为本身为window.showModelDialog()弹出的窗口页面再用window.showModelDialog()弹出的页面是没有opener对象的,所以C页面不能用opener的方式引用B页面。但是因为window.showModelDialog()会使新showModelDialog()的页面获得焦点,只有把这个页面关闭程序才能向下执行,我们可以在showModelDialog()的下一行代码来完成刷新操作。原理是在被刷新的页面中定义一个<a>对象用于执行刷新动作,当C页面关闭时把焦点交给B页面并且继续执行B页面中的代码。代码如下:
A页面:
window.showModelDialog("B页面","参数","参数");
B页面:
window.showModelDialog("C页面","参数","参数");
var url = "B页面";
reload.setAttribute("href",url); //设置刷新页面
reload.click();//刷新动作
必须在页面中定义一个用于刷新有对象<a>;
<a id="reload" style="display:none">刷新</a>
注意:在showModelDialog的页面中必须在<head></head>中添加<base target="_self">,这新该页面的提交才不会弹出一个新的页面,否则就达不到以上效果。