2012-01-17 6 views
0

я всплывающий сделал сЗнайте, когда всплывающее окно закрывается

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

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

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

$(popup).unload() 

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

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

(я нашел это решение на How to know when popup is closed in javascript)

+0

этот вопрос уже задавался и ответил. try http://stackoverflow.com/questions/2797560/set-a-callback-function-to-a-new-window-in-javascript – atmd

+0

Я не знаю, как это связано. Вы предлагаете добавить обратный вызов разгрузки в дочернем окне? –

+0

Вы могли бы добавить обратный вызов onbeforeunload во всплывающем окне ??? –

ответ

0

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

popup.location // Open Window 

=> Location 
     No Properties Defined 

popup.location // Closed Window 

=> null 

Тест с:

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

Я предполагаю, что это потребует опроса, хотя * sigh * –

+0

Итак, вы предлагаете опросить всплывающий объект до тех пор, пока его местоположение не станет нулевым? Нет ли альтернатив? –

+0

Это было бы мое предложение, либо это, либо использование модальных iframes ... –

1

Если вы можете добавить onbeforeunloadeventhandler во всплывающем окне затем попробовать что-то вроде этого,

Родитель:

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

Состояние OP не имеет контроля над содержимым во всплывающем окне, хотя –

+0

Какова совместимость обратного вызова 'onbeforeunload'? AFAIK это топик-нострик ... –

+0

http://pro-thoughts.blogspot.com/2006/03/onbeforeunload-event.html поддерживается почти всем браузером. –

0

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

Вы могли бы быть в состоянии сделать, как это (он работал для меня все равно, и в 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

Где вы говорите «родитель», я уверен, что вы имели в виду «окно». «окно» не должно меняться в зависимости от контекста функции, только «это» делает это, насколько мне известно. –

Смежные вопросы