17.05.2014, 06:21
|
Профессор
|
|
Регистрация: 03.02.2014
Сообщений: 238
|
|
Отследить закрыта ли вызванная вкладка
Приветствую!
Делаю открытие новой вкладки, например
function new() {
window.open("http://javascript.ru", "JSSite", "width=420, height=230, resizable=yes, scrollbars=yes, status=yes");
}
new();
Подскажите как отследить закрытие этой вкладки\окна?
|
|
17.05.2014, 06:38
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,584
|
|
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 - оператор, работать то что вы написали не будет.)
__________________
29375, 35
|
|
17.05.2014, 06:57
|
Профессор
|
|
Регистрация: 03.02.2014
Сообщений: 238
|
|
Нужно отследить закрыл ли пользователь вызванное окно, ваш код не работает.
<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>
|
|
17.05.2014, 08:49
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,584
|
|
<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>
__________________
29375, 35
|
|
17.05.2014, 09:10
|
Профессор
|
|
Регистрация: 03.02.2014
Сообщений: 238
|
|
Я имел ввиду если пользователь закрывает окно, то выполняем действие.
Ваш пример работает только если ставить settimeout..
|
|
17.05.2014, 09:37
|
Профессор
|
|
Регистрация: 03.02.2014
Сообщений: 238
|
|
Если это не возможно, то подскажите как правильно установить settimeout на проверку?
|
|
17.05.2014, 09:48
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,584
|
|
Если во вкладке тот же домен, то newwin.onbeforeunload\.onunload .
Иначе - извращаться.
Если поддержка старых браузеров не в приоритете, то для других доменов можно использовать postMessage.
Тамйер же примерно так:
(function timer(){
if(newwin.closed) doSomething();
else setTimeout(timer, 100);
})())
__________________
29375, 35
|
|
17.05.2014, 10:01
|
Профессор
|
|
Регистрация: 03.02.2014
Сообщений: 238
|
|
Сообщение от Aetae
|
Иначе - извращаться.
|
Я так понимаю практически нереально..?
С таймером что-то не выходит
function checkwindow(win) {
if(win.closed == true)
{
alert('closed');
}
if(win.closed == false)
{
setTimeout(checkwindow, 1000);
}
}
|
|
17.05.2014, 10:11
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,584
|
|
<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>
__________________
29375, 35
Последний раз редактировалось Aetae, 17.05.2014 в 10:18.
|
|
17.05.2014, 10:41
|
Профессор
|
|
Регистрация: 03.02.2014
Сообщений: 238
|
|
Пытаюсь сделать так: если окно открыто продолжаем проверку, если закрыто, то 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>
Что делаю не так..?
|
|
|
|