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

标签 javascript window.open window.closed

有人知道使下面的代码('crosswindow')工作以跟踪由函数 openNew() 打开的多个窗口的最佳解决方案吗?

它目前只能跟踪一个窗口。我尝试了一些对象的东西,但我不是专家。欢迎所有建议。

Javascript:

 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");
    }  
}

HTML

<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>

最终的目标是能够从父页面打开多个新窗口,并且当子窗口关闭时,其会记录在父窗口中。

我制作了一支带有控制台模拟的笔(以避免无限循环警报) http://codepen.io/anon/pen/EjGyQz?editors=101

最佳答案

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

http://codepen.io/anon/pen/GJPqwm?editors=101

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>";
    }  
}

关于javascript - 跟踪多个窗口关闭 javascript(有一个窗口的工作代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31752164/

相关文章:

javascript - 单击时将 Bootstrap div 展开至整行

javascript - 如何使用 Perl CGI 弹出菜单打开新页面

javascript - 从后面的代码关闭 SP.UI.ModalDialog PopUp

javascript - Socket.IO ( nodejs ) 中的 Windows Phone 支持

javascript - 在构建我的 Vue 应用程序之前,我可以在哪里为生成的脚本标签添加属性?

javascript - 窗口.打开 POST

javascript - window.open jquery 变量

javascript - 需要关闭 fancybox 按钮上的当前窗口单击

javascript - 如何生成 0.1 到 46.61 之间且间隔为 0.1 的序列