Знайте, когда всплывающее окно закрыто - PullRequest
0 голосов
/ 17 января 2012

У меня есть всплывающее окно, созданное с помощью

var popup = window.open(URL, ...)

содержимое всплывающего окна не находится под моим контролем.

Я хочу знать, когда всплывающее окно закрыто.Хотя я

$(popup).unload()

мог бы помочь мне, но Firefox запускает событие unload, когда всплывающее окно появляется, а не когда оно закрыто!

Есть ли надежный способ узнать, когда всплывающее окно закрыто,открывашкой?Мне не нравится, когда я опрашиваю всплывающее окно, спрашивая каждые (скажем) 500 мс, закрыто ли оно ...

(Я нашел это решение на Как узнать, когда всплывающее окно закрыто в javascript )

Ответы [ 3 ]

1 голос
/ 17 января 2012

Если вы можете добавить onbeforeunload event handler во всплывающем окне, попробуйте что-то вроде этого,

parent:

function parentCallback(){
  alert("popup is closed");
}

var popup = window.open(URL, ...);

POPUP:

window.onbeforeunload = function(){
    window.opener.parentCallback();
    self.close();
};

еще использовать interval, вот что я мог бы предложить, что-то вроде

var pop_win = window.open(url,...);   
var timer = setInterval(function() {   
    if(pop_win.closed) {  
        clearInterval(timer);  
        alert('popup is closed');  
    }  
}, 1000);  
0 голосов
/ 05 июня 2013

Я знаю, что этот вопрос немного устарел, но для тех, кто ищет ответ, я думаю, что нашел решение:

Возможно, вы сможете сделать так (это работает для меня в любом случае, такжев FF):

Родитель:

var popup = window.open("about:blank"); // Or whatever page you are loading
popup.onunload = function(){
    parent.location.reload();
        // or
    parent.alert("Popup closed!");
        // or any other handler in the parent window,
        // just remember to call it on the parent object.
};
0 голосов
/ 17 января 2012

Кажется, popup.location вернет ноль, если он закрыт, и пустой набор, если он открыт.

popup.location // Open Window

=> Location 
      No Properties Defined

popup.location // Closed Window

=> null

Тест с:

if (popup.location) {alert('hello')}
...