javascript onclose() alebo nieco take

Programovacie jazyky, rady, poradňa...
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

javascript onclose() alebo nieco take

Príspevok od používateľa Mek »

Zdravim,
potrebujem v momente, ked uzivatel zavrie okno prehliadaca, vykonat istu javaskriptovu funkciu, a to tak, aby to fungovalo aspon na trojici najbeznejsich prehliadacov (ie, ff, opera). Na nete som sa dozvedel, ze onclose() neexistuje, a tak som pouzil onunload(), ktory funguje skoro tak, ako ma - problem je len v tom, ze funkcia sa zavola pri kazdom kliknuti na hocijaky odkaz, a nielen pri zatvoreni okna. Moj kod (v externom .js subore) zatial vyzera takto:

Kód: Vybrať všetko

window.onunload=function()
{
	// len ulozi cookie s timestampom zatvorenia okna
	// ako nove a neprecitane prispevky su oznacene tie, ktorych cas je vacsi ako cas v cookie, ktory nastavila tato fcia.
	setCookie('closed',Math.round(new Date().getTime()/1000.0),365);
}
Vie pls niekto, ako na to? Ako vzdy, k+ za pomoc zarucena :)
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Príspevok od používateľa sINN3R »

Hladas toto:

<body onunload="">

na tejto stranke som ti nasiel aj vzorovy priklad skus sa pozriet ked to neni to co hladas tak este napis...

http://www.codetoad.com/javascript/misc ... _event.asp
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Príspevok od používateľa Mek »

hmmm... nn, praveze som nechcel davat event handler priamo do BODY tagu, lebo jednak je to deprecated a druhak... hmm.. skratka nechcem, aby mi to tam spatilo...
mno, a na tej stranke, co si mi poslal link, nie je riesenie, ludia sa tam pytaju na to iste, co ja, vid:
Hi,
I would like to display a message when the user clicks on the "X" button of the browser. for that, I have used onUnload event and in that I am displaying an alert message. This works fine if I click "X". But, even if I refresh the page or if I click any action on the page, same onUnload method is fired. How to restrict my action only to "X" button click?
Thank you,
Suresh M
cize sprava sa to tak isto, aj ked je to v BODY tagu.
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

kedysi som presne toto potreboval spravit ... mno a ak sa dobre pamatam tak som skoncil s tym, ze sa to neda :)
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Príspevok od používateľa Mek »

aha... no to je squele :(
tak inak: ma niekto napad, ako spravit vo fore to, aby som vedel zobrazit nove prispevky od poslednej navstevy? (poznate z phpbb).
Potrebujem si niekam poznamenat timestamp datumu a casu, kedy uzivatel opustil stranku, aby som potom mohol porovnavat timestampy a vypisovat prispevky novsie ako tento timestamp...
alebo ma niekto lepsi napad, ako na to? :(
Dawn
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 354
Registrovaný: 27 dec 2005, 0:44
Bydlisko: www.themapledays.com
Kontaktovať používateľa:

Príspevok od používateľa Dawn »

Mek napísal:aha... no to je squele :(
tak inak: ma niekto napad, ako spravit vo fore to, aby som vedel zobrazit nove prispevky od poslednej navstevy? (poznate z phpbb).
Potrebujem si niekam poznamenat timestamp datumu a casu, kedy uzivatel opustil stranku, aby som potom mohol porovnavat timestampy a vypisovat prispevky novsie ako tento timestamp...
alebo ma niekto lepsi napad, ako na to? :(
hmmm ked som prorgamoval svoje forum, tak som to riesil tak, ze do riadku kde boli info o diskusii sa ukladali postupne ID uzivatelov ktory to navstivili a pri pridani prispevku do diskusie sa to pole vymazalo...v pripade, ze funkcia nasla tvoje ID v poli, tak ti to zobrazilo, ze to mas precitane.... neviem ci to mas ty riesene cez registracie, ale ak nie, tak urcite by to slo keby si ukladal IP...
avsak neskor by mohol nastat problem, keby tam bolo napr 2000 uzivatelov :)... to by boli velke dopyty... este som rozmyslal, ze to vyriesim, ze kazda diskusia ti zapise cookies, lenze tam bol problem, ze server povolil len urcity pocet cookies a celkovo to bolo pre mna take "kakane" :wink:
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Príspevok od používateľa sINN3R »

sorry tak som asi nepochopil co potrebujes :?
lebo v tom live deme co tam je to robi to ze ked zavres okno tak ti to vyvola akciu... ale ty chces asi cosi ine
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Príspevok od používateľa Mek »

sINN3R: viem viem, ja som to skusal :wink: problem je v tom, ze to live demo neodkazuje nikam inam, ale keby odkazovalo na inu stranku, tak pri kliknuti na odkaz by sa tiez zavolala fcia onunload, vyskusaj si to :wink:
Dawn: ano, mam forum iba pre registroavnych... ale ukladanie IDciek userov do DB mi pride ako dost "bakane" riesenie. Rozmyslal som, ze by to slo spravit tak, ze to necham takto, nech sa cookie vytvori vzdy aj pri prechode na inu stranku, ALE... po opatovej navsteve (novej session), si tuto hodnotu cookie ulozim do nejakej session premennej a potom uz aj ked prepisujem cookie samotnu, tak hodnotu tej session premennej (timestampu) mi to nezmeni, takze mozem s nou porovnavat datumy prispevkov...
uz len si najst cas na realizaciu tohto napadu :)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

ešte k tomu zavretiu okna, keby si použil normálne onunload, s tým že dáš podmienku aby sa to vykonalo iba ak nejde o link, asi takto nejak:

Kód: Vybrať všetko

if (document.activeElement.tagName != 'A'){ ... }
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Príspevok od používateľa Mek »

diky, audiotrack, ale tvoja podmienka sa akosi nikdy nevyhodnotila ako TRUE, tj. nikdy sa cookie neprepisala (ani pri zatvoreni okna). Nejake ine napady? :?

//edit: tak uz nic, uz som to poriesil tak, ako som pisal, a zda sa, ze to funguje... ok, problem solved :) 8)
Napísať odpoveď