跟踪多个 window 关闭 javascript(有一个 window 的工作代码)
Track multiple window closes javascript (Have working code for one window)
有人知道使下面的 代码起作用的最佳解决方案 ('crosswindow') 来跟踪函数 openNew() 打开的多个 windows 吗?
它目前只能跟踪一个 window。 我尝试了一些对象,但我不是专家。欢迎所有建议。
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>
最终的目标是能够从父页面打开多个新的 windows 并且当子 window 关闭时,它会登录到父页面 window.
我做了一个模拟控制台的笔(以避免无限循环警报)
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>";
}
}
有人知道使下面的 代码起作用的最佳解决方案 ('crosswindow') 来跟踪函数 openNew() 打开的多个 windows 吗?
它目前只能跟踪一个 window。 我尝试了一些对象,但我不是专家。欢迎所有建议。
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>
最终的目标是能够从父页面打开多个新的 windows 并且当子 window 关闭时,它会登录到父页面 window.
我做了一个模拟控制台的笔(以避免无限循环警报) 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>";
}
}