xiaozhi7616 2009-12-30 14:48
浏览 251
已采纳

Window.open 问题,有点变态

我有一个主窗口mainWin,在主窗口会弹出新的窗口popupWin,在新的弹出窗口popupWin还会弹出新的窗口,可能有多层。

现在要在弹出的窗口中去取mainWin中变量,我考虑不能使用opener来取,因为如果弹出多层窗口,中间层的窗口关闭,opener形成的链就断了,这个办法行不通。

我的方法是在弹出窗口中用window.open去取mainWin的实例
[code="javascript"]
var main = window.open('','mainWin','');
[/code]

这样通过main变量就可以取到mainWin的实例,然后操作主窗口中的变量。只要main窗口处于打开状态,window.open就会返回mainWin的实例而不打开新的窗口。

问题是:
如果main窗口先关闭,而其他的弹出窗口尚未关闭,然后在弹出窗口中找mainWin的实例没有找到,window.open方法会打开一个空白的新窗口,这样会影响用户体验。

请问各位高手,如何能使window.open在主窗口关闭的状态下不打开新的窗口?

或者有更简单的思路在弹出窗口中取到主窗口的实例?

  • 写回答

1条回答 默认 最新

  • kjah_1 2009-12-30 15:50
    关注

    在所有子窗口中保留mainWin window对象

    在子窗口onload中加上类似如下代码

    [code="java"]
    if(opener.mainWin){
    if(opener.mainWin.closed){
    alert("mainWin is closed!");
    }else{
    window.mainWin=opener.mainWin;
    }
    }else{
    window.mainWin=opener;
    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题