【问题标题】:javascript alert on parent page when child popup closes子弹出窗口关闭时父页面上的javascript警报
【发布时间】:2011-05-14 09:10:19
【问题描述】:

我正在使用 javascript window.open 方法打开让我们说http://www.google.com [它总是会是一些外部 url]

我已将窗口对象的引用存储在一个变量中,问题是该变量在父页面上永远不会为空,我无法提醒用户弹出窗口已关闭。

这是代码

变种winFB; 变种winTWt; var counterFB = 0; var counterTWT = 0; var timerFB; 函数 openFB() { 如果(计数器FB == 0){ winFB = window.open("http://www.google.com"); 计数器FB = 1; } if (counterFB > 0) { 警报(winFB); 如果(winFB == null){ 计数器FB = 0; 清除超时(定时器FB); alert("窗口关闭"); } } timerFB= setTimeout("openFB()", 1000); }

我不能在弹出/子窗口上放置任何 javascript 代码。

希望有人能帮我解决这个问题

【问题讨论】:

    标签: javascript window.open


    【解决方案1】:
    //in the parent
    winFB = window.open("http://www.google.com");
    
    //in the child window you can access
    var _parent = window.opener.document;
    
    //also use the onunload event in the child window
    onunload="doSomething()"
    

    希望这能给你一些方向..

    【讨论】:

    • 这不过帮助我解决了另一个问题。谢谢你,先生!
    【解决方案2】:

    window 变量在关闭时不会被清空,但它的.closed propertytrue,所以只需将您的检查更改为该属性,如下所示:

    var winFB;
    var winTWt;
    var counterFB = 0;
    var counterTWT = 0;
    var timerFB;
    function openFB() {
        if (counterFB == 0) {
            winFB = window.open("http://www.google.com");
            counterFB = 1;
        }
        if (counterFB > 0) {
            if (winFB.closed) {
                counterFB = 0;
                clearTimeout(timerFB);
                alert("Window Closed");
            }
        }
        timerFB = setTimeout(openFB, 1000);
    }
    

    还要注意setTimeout() 的更改,尽可能(几乎总是)传入一个函数而不是一个字符串,这样在范围界定方面的问题就会少很多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      相关资源
      最近更新 更多