Js: confirm при изход от страницата?

sizif

Registered
Здравейте!

Искам при прекъсване на зареждането или при затваряне на прозореца да изкарам кънфърм (confirm). Двете опции са: "ОК" -> пренасочване към страницата izhod.php (за да актуализирам информацията на сървъра) и "cansel" -> затварянето се отменя.

Скалъпих това:

<script language="JavaScript">

function exitPage()
{
var izhod=confirm('Izhod ot stranicata?');

if(izhod)
{
window.location='izhod.php';
}
}

</script>

<body onUnload="exitPage();">

...но при "cansel" пак затваря прозореца, а при "ОК" май не препраща към 'izhod.php' :(

Къде греша?
 
искаш да излиза прозорец ли ? ако е това виж в менюто при други има мой урок "изкачащи прозорци (съобщения)"
 
Малко няма логика!хем да се затваря прозореца,хем да те препраща към друг сайт! :idea:
 
Има 2 варианта - или отваряш izhod.php в нов прозорец или можеш да зареждаш страцата са AJAX за да актуализираш информацията :)
 
I_V_O каза:
Има 2 варианта - или отваряш izhod.php в нов прозорец или можеш да зареждаш страцата са AJAX за да актуализираш информацията :)
Е какъв е смисъла да затвориш текущия и да отвориш същия сайт в нов прозорец?
 
sizif трябва да отговори :) Може би иска да запише в бд,че потребителя напуска сайта... знам ли.
 
Здравейте!

Съжалявам за забавянето, но И-нет доставчика ми още живее във времето на Т. Живков: "Тая година завод за полупроводници, догодина цели" :)

I_V_O

Може би иска да запише в бд,че потребителя напуска сайта... знам ли.

Да, точно това искам да направя. Не ми е нужно да изкарва прозорец, важното е в момента на затварянето браузъра да изпрати заявка към скрипт с адрес: izhod.php Просто да я изпрати, дали ще чака отговор от сървъра н.з., важното е да ъпдейтна записите.
 
I_V_O каза:
Има 2 варианта - или отваряш izhod.php в нов прозорец или можеш да зареждаш страцата са AJAX за да актуализираш информацията :)
 
А как ще изглежда самия confirm? Защото функцията, която съм пуснал в първото мнение винаги затваря прозореца, а на мен ми е нужно при "кенсъл" затварянето да се отмени.

Ще го направя с AJAX, но confirm-а ми не работи добре.
Как трябва да изглежда функцията за confirm-а?
 
na4itooo каза:
I_V_O каза:
Има 2 варианта - или отваряш izhod.php в нов прозорец или можеш да зареждаш страцата са AJAX за да актуализираш информацията :)

ей ти откъде си извъди и защо си оспамил целия форум с цитати, аз ще те намеря и тогава гледай какво ще стане :evil:
 
sizif каза:
I_V_O

Може би иска да запише в бд,че потребителя напуска сайта... знам ли.

Да, точно това искам да направя. Не ми е нужно да изкарва прозорец, важното е в момента на затварянето браузъра да изпрати заявка към скрипт с адрес: izhod.php Просто да я изпрати, дали ще чака отговор от сървъра н.з., важното е да ъпдейтна записите.

Логиката е друга. При логин записваш в една таблица session id, и 'времето на влизане в сайта'. След това с ajax на определено време ъпдейтваш 'времето на влизане в сайта'. Пак на определено време пък трябва да си чистиш старите записи, които не са ъпдейтвани - декем хората са затворили браузъра.
 
Здравей, Slavei!

Както винаги, радвам се да те видя, макар да наминаваш рядко :)

Таблицата с потребители в чата се ъпдейтва на 15 мин (т.е. 4 заявки на потребител за час - използвам сесии, за да следя действието, а го отразявам само 4 пъти). Приемам, че всеки изпратил съобщение в това време е още в чата. При извикване на информацията от AJAX-а показвам само тези с действие в тези 15 мин.

Но това са 15 мин разлика от действителното положение, които са много време, при положение, че всичко друго ми е синхронизирано. Или трябва да вдигна броя на заявките (излишен лукс) или да направя така, че потребителят дори при затваряне на прозореца, ще-не ще да съобщи на сървъра.

Това исках да постигна, а конфърма беше спомагателен елемент.

В момента искам само действащ конфърм:
ок -> затваря прозореца и отваря нов към izhod.php
кенсъл -> затварянето се отменя и прозореца остава отворен.


Моля, съсредоточете се върху този въпрос, а не върху алгоритмите на сървъра ми :))
 
sizif каза:
Здравей, Slavei!

Както винаги, радвам се да те видя, макар да наминаваш рядко :)

Таблицата с потребители в чата се ъпдейтва на 15 мин (т.е. 4 заявки на потребител за час - използвам сесии, за да следя действието, а го отразявам само 4 пъти). Приемам, че всеки изпратил съобщение в това време е още в чата. При извикване на информацията от AJAX-а показвам само тези с действие в тези 15 мин.

Но това са 15 мин разлика от действителното положение, които са много време, при положение, че всичко друго ми е синхронизирано. Или трябва да вдигна броя на заявките (излишен лукс) или да направя така, че потребителят дори при затваряне на прозореца, ще-не ще да съобщи на сървъра.

Това исках да постигна, а конфърма беше спомагателен елемент.

В момента искам само действащ конфърм:
ок -> затваря прозореца и отваря нов към izhod.php
кенсъл -> затварянето се отменя и прозореца остава отворен.


Моля, съсредоточете се върху този въпрос, а не върху алгоритмите на сървъра ми :))

Здравей

Относно алгоритмите ти - ти си знаеш.
Относно JS - мисля, че това е решението на проблема ти:
http://www.w3schools.com/jsref/jsref_onunload.asp
Имай в предвид, че не роботя с js и може да има и друго по-добро решение.

пп
На Опера не работи при затваряне на таб, при затваряне на самата Опера не искам да тествам ;) виж на ИЕ и ФФ дали не се обърква при затваряне на табове.
 

Back
Горе