Я ищу близкое событие для всплывающего окна. Я нашел один для XUL , но он мне нужен для HTML.
Всплывающее окно имеет свойство closed
.
>>> var popup = open('http://example.com/', 'popup', 'height=400,width=500');
>>> popup.closed
false
Ну, я могу проверить это раз в полсекунды .
function open_popup() {
var popup = open('http://example.com/', 'popup', 'height=450,width=450');
var timer = setInterval(function(){
if (popup.closed) {
alert('popup closed!');
clearInterval(timer);
}
}, 500);
}
Я тестировал его на Chrome 4.0.249.27, Opera 10.10, Safari 4.0.4 и Firefox 3.5.5. Все отлично работает.
Но setInterval беспокоит меня. Это безобразно Есть ли лучший способ сделать это?
UPDATE:
Я использую всплывающие окна для диалога аутентификации (на самом деле oAuth). Я хочу отправить некоторые данные в родительское окно после закрытия всплывающего окна (через postMessage).
Страница внутри всплывающего окна с другого домена. Поэтому я не могу добавить к нему ни одно событие (unload
) из-за ограничений безопасности.
Я не могу использовать iframe из-за скрипта iframe buster. Поэтому я не могу использовать модные диалоговые окна jQuery.
Я не могу редактировать что-либо внутри всплывающего окна.