这个帖子的要求听起来就优点复杂啊:“有一个窗口t1,点t1中的一个按钮b1,弹出新窗口t2,点t2中的按钮b2,弹出新窗口t3,点t1中的按钮b3使t2,t3都关闭掉,能做到吗?”
简化一下,主窗口打开“弹出窗口1”,弹出窗口1打开“弹出窗口2”。而最后主窗口能够关闭“弹出窗口1”,和“弹出窗口2”。
panliu888前辈给出了非常简洁的代码,看了十分佩服。我把代码分解了一下,加了点注释,降低了阅读代码的难度(不然我有点读不懂)。个人认为思路中最精彩的一处就是下面突出显示的那一行。
主窗口的JS
<script type="text/javascript">
var win1;
function o1(){
//打开第一个窗口,并保存在winl中
win1=window.open('blue_js04ex2.html','','width=200,height=200');
}
//shutWindows函数用来关闭窗口1
function shutWindows(){win1.close();}
</script>
窗口1的JS
<script type="text/javascript">
function o2(){
//win2变量保存窗口2
win2=window.open('','','width=200,height=200');}
//当关闭窗口1的时候也关闭窗口2!
window.οnunlοad=function(){ win2.close();}
</script>
测试页面。
下面一个帖子也是关于弹出窗口的。
弹出窗口的安全问题,帖子:蓝色中运行代码的不解?
蓝色理想论坛里有一个运行代码的功能。
var newwin=window.open('','','');
newwin.opener = null;
newwin.document.write(code);
newwin.opener = null;一句是什么意思呢?Poorfish前辈:“让子窗口不能对父窗口传参数”。如果没有这句代码,JS代码是可以利用opener访问甚至改变打开弹出窗口的网页,这样就杜绝了可能的安全问题。