1

我正在使用 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 代码。

希望有人可以帮助我

4

2 回答 2

4

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

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()变化,尽可能(几乎总是)传递一个函数而不是一个字符串,你在范围界定方面的问题会少得多。

于 2010-11-23T10:11:54.013 回答
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()"

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

于 2010-11-23T10:15:32.230 回答