Узнать о закрытие окна по нажатию на X
От: Аноним  
Дата: 28.01.09 15:08
Оценка:
Собственно, нужно в onbeforeunload знать, закрывается окно по нажатию на X, или другим способом,
В эксплорере, грубо говоря, такой способ работает:

Only put body onbeforeunload="HandleOnClose()"
function HandleOnClose() 
{
 if (event.clientY < 0) 
 {
  event.returnValue ="mensage";
 }
}


event.clientY в firefox по другому работает...

может, какие-то переменные окружения могут это выдать косвенно?
Re: Узнать о закрытие окна по нажатию на X
От: DeZhavi Россия  
Дата: 28.01.09 19:59
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Собственно, нужно в onbeforeunload знать, закрывается окно по нажатию на X, или другим способом,

А>В эксплорере, грубо говоря, такой способ работает:
Вообще, onbeforeunload — это не закрытие окна, а выгрузка страницы из памяти, т.е. из окна. И сработает оно, если пользователь просто ушел со страницы на другой сайт.
Отследить именно закрытие окна по крестику не получится, тут надо искать компромисс. Либо если, для вас закрытие и уход на другой сайт -есть одно и тоже, тогда можно и этот вариант использовать.
Re[2]: Узнать о закрытие окна по нажатию на X
От: Аноним  
Дата: 29.01.09 04:28
Оценка:
в принципе, можно упростить задачу, нужно отловить любое закрытие окна, если оно происходит без постбека на сервер, мне это нужно знать в обработчике onBeforeUnload. Я работаю на aspx.net, там есть __doPostBack, но она вызывается уже после onbeforeonload, что можно такого намутить, что-бы узнать, что недавно была нажата кнопка, на все контролы динамически навесить onClick & onEnter(или как его там )?
смогу ли я навесить несколько onclick на контрол?

есть более разумные идеи? )
знаю, что это не вписывается в идеологию, но готовое приложение на это прилично завязано.
Re[3]: Узнать о закрытие окна по нажатию на X
От: DeZhavi Россия  
Дата: 29.01.09 07:21
Оценка:
Здравствуйте, Аноним, Вы писали:

А>в принципе, можно упростить задачу, нужно отловить любое закрытие окна, если оно происходит без постбека на сервер, мне это нужно знать в

Еще раз повторяю, отловить чисто закрытие окна не получиться, можно отловить только уход со страницы, вот от этого надо и плясать.
Тут эта тема обсуждалась например здесь
Автор: Matveyka
Дата: 08.09.04

Немного не то, но в туже степь
Автор: zappy
Дата: 03.11.08

А>обработчике onBeforeUnload. Я работаю на aspx.net, там есть __doPostBack, но она вызывается уже после onbeforeonload, что можно такого намутить, что-бы узнать, что недавно была нажата кнопка, на все контролы динамически навесить onClick & onEnter(или как его там )?
А>смогу ли я навесить несколько onclick на контрол?

А>есть более разумные идеи? )

А>знаю, что это не вписывается в идеологию, но готовое приложение на это прилично завязано.
ВОт здесь что-то подобное обсуждается.
НО мне кажется вам этот вариант не подойдет, но вдруг.

Вы напишите конкретно для чего вам это надо, может и решение найдется
Re[4]: Узнать о закрытие окна по нажатию на X
От: Аноним  
Дата: 29.01.09 13:04
Оценка:
а что думаешь за такой, я понимаю, тупой, но чисто теоретически рабочий метод:
мы запоминаем координаты каждого клика, через 300мс мы их сбрасываем (в идеале, нужно timestamp запоминать, но я пока не знаю, как произвести сравнение, что дата за 300мс не устарела на js)

потом, когда возникает событие handleonclose, мы проверяем, если x>0, то закрытие идёт по клику в браузере.



<body  onmousedown="catchCoords(event)">

var x=-1;
var y=-1;

function catchCoords(event)
{
    x=event.screenX;
    y=event.screenY;
    setTimeout('clearCoordinates()', 300);     // 1000 - 1 sec
}

function clearCoordinates()
{
    x=-1; y=-1;
}

window.onbeforeunload = HandleOnClose;

function HandleOnClose() 
{
    если x & y = -1, координаты устарели, тобишь, кликнули хз где.
}
Re[5]: Узнать о закрытие окна по нажатию на X
От: DeZhavi Россия  
Дата: 29.01.09 13:35
Оценка:
Здравствуйте, Аноним, Вы писали:

А>а что думаешь за такой, я понимаю, тупой

ни в коем разе я так не думаю
А>мы запоминаем координаты каждого клика, через 300мс мы их сбрасываем (в идеале, нужно timestamp запоминать, но я пока не знаю, как произвести сравнение, что дата за 300мс не устарела на js)

Ну впринципе можно и так, а как со случаем если пользователь просто ввел адрес в строке?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.