Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.05.2014, 06:21
Профессор
Отправить личное сообщение для cript Посмотреть профиль Найти все сообщения от cript
 
Регистрация: 03.02.2014
Сообщений: 238

Отследить закрыта ли вызванная вкладка
Приветствую!
Делаю открытие новой вкладки, например
function new() {
window.open("http://javascript.ru", "JSSite", "width=420, height=230, resizable=yes, scrollbars=yes, status=yes");
}
new();

Подскажите как отследить закрытие этой вкладки\окна?
Ответить с цитированием
  #2 (permalink)  
Старый 17.05.2014, 06:38
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

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
Ответить с цитированием
  #3 (permalink)  
Старый 17.05.2014, 06:57
Профессор
Отправить личное сообщение для cript Посмотреть профиль Найти все сообщения от cript
 
Регистрация: 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>
Ответить с цитированием
  #4 (permalink)  
Старый 17.05.2014, 08:49
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

<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
Ответить с цитированием
  #5 (permalink)  
Старый 17.05.2014, 09:10
Профессор
Отправить личное сообщение для cript Посмотреть профиль Найти все сообщения от cript
 
Регистрация: 03.02.2014
Сообщений: 238

Я имел ввиду если пользователь закрывает окно, то выполняем действие.
Ваш пример работает только если ставить settimeout..
Ответить с цитированием
  #6 (permalink)  
Старый 17.05.2014, 09:37
Профессор
Отправить личное сообщение для cript Посмотреть профиль Найти все сообщения от cript
 
Регистрация: 03.02.2014
Сообщений: 238

Если это не возможно, то подскажите как правильно установить settimeout на проверку?
Ответить с цитированием
  #7 (permalink)  
Старый 17.05.2014, 09:48
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

Если во вкладке тот же домен, то newwin.onbeforeunload\.onunload .
Иначе - извращаться.
Если поддержка старых браузеров не в приоритете, то для других доменов можно использовать postMessage.

Тамйер же примерно так:
(function timer(){
    if(newwin.closed) doSomething();
    else setTimeout(timer, 100);
})())
__________________
29375, 35
Ответить с цитированием
  #8 (permalink)  
Старый 17.05.2014, 10:01
Профессор
Отправить личное сообщение для cript Посмотреть профиль Найти все сообщения от cript
 
Регистрация: 03.02.2014
Сообщений: 238

Сообщение от Aetae
Иначе - извращаться.
Я так понимаю практически нереально..?

С таймером что-то не выходит
function checkwindow(win) {
if(win.closed == true)
{
alert('closed');
}
if(win.closed == false)
{
setTimeout(checkwindow, 1000);
}
}
Ответить с цитированием
  #9 (permalink)  
Старый 17.05.2014, 10:11
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

<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.
Ответить с цитированием
  #10 (permalink)  
Старый 17.05.2014, 10:41
Профессор
Отправить личное сообщение для cript Посмотреть профиль Найти все сообщения от cript
 
Регистрация: 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>

Что делаю не так..?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отследить событие posta jQuery 3 08.02.2013 04:14
Новая неактивная вкладка hatomik Общие вопросы Javascript 0 12.11.2012 12:27
Новая неактивная вкладка с рекламой от tak hatomik Общие вопросы Javascript 0 11.11.2012 22:37
Отследить изменение картинки на сервере overdrive Элементы интерфейса 11 29.09.2012 23:48
Отследить открытие ссылки само по себе, без onclick lancer Events/DOM/Window 28 19.11.2011 19:40