跟踪多个窗口关闭javascript(一个窗口有工作代码)

跟踪多个窗口关闭javascript(一个窗口有工作代码),javascript,window.open,window.closed,Javascript,Window.open,Window.closed,有人知道让下面的代码(“交叉窗口”)工作的最佳解决方案吗?跟踪函数openNew()打开的多个窗口 它目前只能跟踪一个窗口。我试过一些物体,但我不是专家。欢迎所有建议 Javascript: HTML 最终的目标是能够从父页面打开多个新窗口,当子窗口关闭时,它将登录到父窗口。 我制作了一支模拟控制台的笔(以避免无限循环警报) 因此,您只需将对轮询的调用包装在一个闭包中,并将所有变量传递给它,这样它就不会覆盖旧的变量: 函数openNew(href){ var current=window.

有人知道让下面的代码(“交叉窗口”)工作的最佳解决方案吗?跟踪函数openNew()打开的多个窗口

它目前只能跟踪一个窗口。我试过一些物体,但我不是专家。欢迎所有建议

Javascript:

HTML


最终的目标是能够从父页面打开多个新窗口,当子窗口关闭时,它将登录到父窗口。

我制作了一支模拟控制台的笔(以避免无限循环警报)

因此,您只需将对轮询的调用包装在一个闭包中,并将所有变量传递给它,这样它就不会覆盖旧的变量:

函数openNew(href){
var current=window.open(href,“_blank”);
var clickTime=(新日期()).getTime();
(功能(win、url、clickTime){
var timer=setInterval(函数(){polling(win,timer,url,clickTime)},500);
})(当前,href,单击时间);
}
函数轮询(win、计时器、url、clickTime){
如果(赢和赢结束){
var closingTime=(新日期()).getTime();
变量差异=((关闭时间点击时间)/1000);
清除间隔(计时器);
//用div日志替换控制台
document.getElementById('log')。innerHTML+=url+“在“+diff+”秒后关闭
”; } }
看一看
 function openNew(href){

    timer = setInterval('polling()',500);
    win = window.open(href, '_blank');

    url=href;
    openTime=0;
    clickTime= (new Date()).getTime();

}

function polling(){

     if (win && win.closed) {

        var closingTime = (new Date()).getTime();
        var diff = ((closingTime-clickTime)/1000);

        clearInterval(timer);
        console.log(url+" closed after " + diff + " secs");
    }  
}
<a href="http://google.com" onClick="openNew('http://google.com'); return false;" target="_blank">google</a>
<a href="https://facebook.com" onClick="openNew('https://facebook.com'); return false;" target="_blank">facebook</a>
function openNew(href){
    var current = window.open(href, '_blank');
    var clickTime= (new Date()).getTime();
    (function(win, url, clickTime) {
        var timer = setInterval(function() { polling(win, timer, url, clickTime) },500);
    })(current, href, clickTime);       
}

function polling(win, timer, url, clickTime){
     if (win && win.closed) {
        var closingTime = (new Date()).getTime();
        var diff = ((closingTime-clickTime)/1000);
        clearInterval(timer);
        //replace console with div log
        document.getElementById('log').innerHTML += url+" closed after " + diff + " secs<br>";
    }  
}