Podejmowanie akcji przy opuszczaniu strony

HTML to podstawy w dziedzinie tworzenia stron WWW, Style CSS warto opanować, bowiem za ich pomocą można dostosować odpowiednio wygląd swojej witryny WWW. Zagłębiamy się dalej i udostępniamy w tym forum możliwość zadawania pytań o JavaScript.
ODPOWIEDZ
Marim
Posty: 13
Rejestracja: sob mar 06, 2004 7:01 pm
Lokalizacja: Kraków

Podejmowanie akcji przy opuszczaniu strony

Post autor: Marim »

Piszę proste statystyki i potrzebuje sprawdzic jak długo użytkowanik przebywał na mojej stronie. Mam pewien skrypcik w JS, który pokazuje czas spędzony na stronie i przekazuje to do pola input. Jednak chciałbym wykorzystać funkcję onexit i przezucic jakos ten czas do php i zapisac do bazy.

Oto kod skryptu:

Kod: Zaznacz cały

<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
startday = new Date();
clockStart = startday.getTime();
function initStopwatch() {
var myTime = new Date();
return((myTime.getTime() - clockStart)/1000);
}
function getSecs() {
var tSecs = Math.round(initStopwatch());
var iSecs = tSecs % 60;
var iMins = Math.round((tSecs-30)/60);
var sSecs ="" + ((iSecs > 9) ? iSecs : "0" + iSecs);
var sMins ="" + ((iMins > 9) ? iMins : "0" + iMins);
document.forms[0].timespent.value = sMins+":"+sSecs;
window.setTimeout('getSecs()',1000);
}
// End -->

<BODY onLoad="window.setTimeout('getSecs()',1)">

<input size=5 name=timespent>
</script>
Za wszystkie sugestie i porady jak to zrobic z góry Wielkie Dzieki!
iro
Moderator
Posty: 402
Rejestracja: pt gru 19, 2003 8:20 pm
Lokalizacja: Szczecin

Re: Podejmowanie akcji przy opuszczaniu strony

Post autor: iro »

Marim pisze:Mam pewien skrypcik w JS, który pokazuje czas spędzony na stronie i przekazuje to do pola input.
Nie ma czegoś takiego jak pole input. Jest to element, który definiuje różne pola np. text, hidden, submit.
Musisz określić najpierw typ tego pola (poprzez atrybut type). A wartość, którą chcesz przekazać dalej określasz dzięki atrybutowi value. Jednak element input stosowany jest tylko w formularzach. Więc nie sądzę, żeby to rozwiązanie było dobre.
Marim
Posty: 13
Rejestracja: sob mar 06, 2004 7:01 pm
Lokalizacja: Kraków

Re: Podejmowanie akcji przy opuszczaniu strony

Post autor: Marim »

Hmmmm ja woogle nie znam sie na JS jedynie na PHP dlatego chcialbym sie dowiedziec czy istnieje jakakolwiek mozliwosc przekazania danych z tego skryptu do php??
wixor
Przelotem
Przelotem
Posty: 336
Rejestracja: śr gru 31, 2003 10:18 pm
Lokalizacja: Wrocław

Re: Podejmowanie akcji przy opuszczaniu strony

Post autor: wixor »

robisz forma z samymi hiddenami (<input type="hidden" name="foo" value="bar">), dzięki temu jest zupełnie niewidoczny. Jak chcesz, to modyfikujeszm zawartość inputów i w końcu wywołujesz metode submit() formularza, przez co dane zostają przekazane do PHP
Marim
Posty: 13
Rejestracja: sob mar 06, 2004 7:01 pm
Lokalizacja: Kraków

Re: Podejmowanie akcji przy opuszczaniu strony

Post autor: Marim »

Hmmm (nie jestem znawca) ale czy napewno formularz zostanie wyslany po opuszczeniu strony ??
Dreen
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn paź 20, 2003 6:32 pm
Lokalizacja: Żywiec

Re: Podejmowanie akcji przy opuszczaniu strony

Post autor: Dreen »

hmmm na moj gust to mozna wywolac popupa skrypciku ze zmiennymi w url na wyjsciu i zamknac go po 1sek
Marim
Posty: 13
Rejestracja: sob mar 06, 2004 7:01 pm
Lokalizacja: Kraków

Re: Podejmowanie akcji przy opuszczaniu strony

Post autor: Marim »

Hmmm z popup'em to jest nie do konca takiego dobre rozwiazanie. Poniewaz coraz wiecej uzytkownikow ma zablokowane wyskakiwanie tego badziewia. Ja myslalem o "odniesieniu" sie do jakiegos pliku:

Kod: Zaznacz cały

<script type="text/javascript">
<!--
document.writeln('<'+'scr'+'ipt type="text/javascript" src="t2.php?t='+timespend+'" defer="defer"></'+'scr'+'ipt>');
//-->
</script>
Tylko za bardzo nie wiem jak to polaczyc z funkcja onLoad.
zwirek
Posty: 16
Rejestracja: wt wrz 21, 2004 6:57 pm

Re: Podejmowanie akcji przy opuszczaniu strony

Post autor: zwirek »

Po co te zabawy, przekazujesz dane do skryptu który zapisuje dane w bazie a potem header("Location: nazwa strony"); I przechodzisz do strony która ma być wywołana, może byc ta sama. Poza tym mozesz uzyć że formularz odwołuje się do tej samej strony przez opcje 'ACTION="<?=$PHP_SELF;?>".
the_foe
Przelotem
Przelotem
Posty: 295
Rejestracja: pt sty 31, 2003 12:53 pm
Lokalizacja: Wałbrzych
Kontakt:

Re: Podejmowanie akcji przy opuszczaniu strony

Post autor: the_foe »

mowiac wszytkie te prozpozycje sa do bani. JS do zliczia czasu to ryzykowny pomysl, gostek przestawia zegar o rok i nagle jest guru w ogladaniu Twojej strony.
Lepiej zrobic to w IFRAME. Robisz na stronie IFRAME, ukrywasz go wymiarami (width i height na 0), i ladujesz do niego prosty skrypcik ktory dodaje do licznika +1 jak sie uruchomi. robimy meta tag na refresh co 10 sek. i mamy idealna zliczarke!
Marim
Posty: 13
Rejestracja: sob mar 06, 2004 7:01 pm
Lokalizacja: Kraków

Re: Podejmowanie akcji przy opuszczaniu strony

Post autor: Marim »

Mysle, ze najlepszym rozwiazaniem bedzie "wywolanie" jakiegos pliku zliczajacego po zaladowaniu strony z unikalnym nr id uzytkownika i po opuszczeniu strony kolejne "wywolanie" tego pliku. Nastepnie ten plik zliczy czas, ktory uplynal miedzy tymi wywolaniami.

Mam tylko jeden problem cos mi nie dziala funkcja onexit. Moze mi ktos wyjasnic uzywanie tej funkcji (skladnia). Z góry dzieki.

Pozdrawiam
ODPOWIEDZ