Отследить закрыта ли вызванная вкладка
Приветствую!
Делаю открытие новой вкладки, например function new() { window.open("http://javascript.ru", "JSSite", "width=420, height=230, resizable=yes, scrollbars=yes, status=yes"); } new(); Подскажите как отследить закрытие этой вкладки\окна? |
function newWindow() { var win = window.open("http://javascript.ru", "JSSite", "width=420, height=230, resizable=yes, scrollbars=yes, status=yes"); return win } var newWin = newWindow(); if(newWin){ //код } P.S. new - оператор, работать то что вы написали не будет.) |
Нужно отследить закрыл ли пользователь вызванное окно, ваш код не работает.
<script>function newwin() { var newwin = window.open("http://javascript.ru", "JSSite", "width=420, height=230, resizable=yes, scrollbars=yes, status=yes"); return newwin; } var newwindow = newwin(); if(newwindow) { alert(); } </script> <div onclick="newwin();">Click</div> |
<script>function newwin() { var newwin = window.open("http://javascript.ru", "JSSite", "width=420, height=230, resizable=yes, scrollbars=yes, status=yes"); return newwin; } function test(win) { return alert( win.closed ? 'closed' : 'not closed' ); } </script> <div onclick="newwindow = newwin();">Open</div> <div onclick="test(newwindow);">Test</div> |
Я имел ввиду если пользователь закрывает окно, то выполняем действие.
Ваш пример работает только если ставить settimeout.. |
Если это не возможно, то подскажите как правильно установить settimeout на проверку?
|
Если во вкладке тот же домен, то newwin.onbeforeunload\.onunload .
Иначе - извращаться. Если поддержка старых браузеров не в приоритете, то для других доменов можно использовать postMessage. Тамйер же примерно так: (function timer(){ if(newwin.closed) doSomething(); else setTimeout(timer, 100); })()) |
Цитата:
С таймером что-то не выходит function checkwindow(win) { if(win.closed == true) { alert('closed'); } if(win.closed == false) { setTimeout(checkwindow, 1000); } } |
<script> function newWin(){ var win = window.open("http://javascript.ru", "JSSite", "width=420, height=230, resizable=yes, scrollbars=yes, status=yes"); (function timer(){ if(win.closed) doSomething(win); else setTimeout(timer, 100); }()) return win; } function doSomething(win) { return alert( win.closed ); } </script> <div onclick="newWin();">Open</div> |
Пытаюсь сделать так: если окно открыто продолжаем проверку, если закрыто, то alert.
<script>function newWin() { var newwin = window.open("http://javascript.ru", "JSSite", "width=420, height=230, resizable=yes, scrollbars=yes, status=yes"); (function checkwindow(){ if(win.closed == false) { alert(); } else { alert('OK'); setTimeout(checkwindow, 1000); } }()) return newwin; } </script> <div onclick="newWin();">Open</div> Что делаю не так..? |
Часовой пояс GMT +3, время: 11:27. |