#javascript #window
#javascript #окно
Вопрос:
Я нашел код, который позаботится об открытии всплывающего окна, которое мне нужно:
function winOpen(theURL, Name, popW, popH, scroll) { // V 1.0
var winleft = (screen.width - popW) / 2;
var winUp = (screen.height - popH) / 2;
winProp =
'width=' popW ',height=' popH ',left=' winleft ',t op=' winUp ',scrollbars=' scroll ','
Win = window.open(theURL, Name, winProp)
if (parseInt(navigator.appVersion) >= 4){
Win.window.focus();
}
Возможно ли включить сюда функции, которые выполняются при закрытии окна, или для этого требуется где-то отдельный вызов функции? Я вызываю window open по ссылке html.
Ответ №1:
Страница, которую вы показываете внутри всплывающего окна, может иметь обработчик событий, прикрепленный к body
‘s onunload
или onbeforeunload
(я думаю, что это только IE). Это сработает, если документ выгрузится (кто бы мог подумать?). Если у вас нет ссылок внутри документа, которые будут его выгружать, вы можете использовать это событие как индикатор того, что ваше окно было закрыто.
Вторая возможность: добавить сторожевой таймер.
var watcherID = setInterval(function()
{
if (Win.closed)
{
clearTimeout(watcherID);
// Do what you have to do.
}
}, 400);
Ответ №2:
Вы должны сделать небольшой отступ в своем коде, чтобы сделать его более читаемым. Кроме того, вы можете использовать win.closed
, чтобы увидеть, что оно закрыто onunload
, но обязательно подождите немного, прежде чем проверять:http://jsfiddle.net/9PYWj /.
function winOpen(theURL, Name, popW, popH, scroll) { // V 1.0
var winleft = (screen.width - popW) / 2,
winUp = (screen.height - popH) / 2,
winProp = 'width=' popW
',height=' popH
',left=' winleft
',top=' winUp
',scrollbars=' scroll ',',
win = window.open(theURL, Name, winProp);
win.onunload = function() {
setTimeout(function() {
if(win.closed) {
alert(123);
}
}, 100);
};
win.focus();
}