Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

window.onbeforeunload

[es] :: Javascript i AJAX :: window.onbeforeunload

[ Pregleda: 2103 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sojic
Dalibor Sojic
Makedonija

Član broj: 7051
Poruke: 796
*.home.otenet.gr.

Sajt: right-sock.net


+1 Profil

icon window.onbeforeunload24.08.2010. u 12:27 - pre 166 meseci
Treba mi sledece resenje:

On Before Unload, da izadje poruka... ako klinke OK - zatvara prozor, ako klikne CANCEL, ostaje na strani, ali u tom momentu pravi redirect na novi url.

Code:

    window.onbeforeunload = function(e) {
        e.returnValue="Ubacim plus moju poruku";
        window.location="http://www.google.com";
    };


Ovde je problem sto u momentu na zatvaranje brousera, izadje confirm, ali napravi redirect pred da dam odgovor confirm boxu.

Kako da "redirectujem" nakon klika CANCEL?
routing protocols enable routers to route routed protocols!
 
Odgovor na temu

sojic
Dalibor Sojic
Makedonija

Član broj: 7051
Poruke: 796
*.home.otenet.gr.

Sajt: right-sock.net


+1 Profil

icon Re: window.onbeforeunload24.08.2010. u 13:33 - pre 166 meseci
Meni izgleda kao nemoguce... zato sto onunload se izvrsava na "napustanje" strane... sto znaci da onclose, pozovem onbeforeunload, onda pozovem window.location, sto ustvari je opet onbeforeunload.

Ako ima neki drugi "event" da detektujem "close" na window, ne i klik linka i sl.

[Ovu poruku je menjao sojic dana 24.08.2010. u 14:46 GMT+1]
routing protocols enable routers to route routed protocols!
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: window.onbeforeunload24.08.2010. u 14:11 - pre 166 meseci
hmm, da bi izbacio tvoju poruku treba da uradis return stringa koji hoces da se pojavi:
Code (javascript):

window.onbeforeunload = function(e) {
  return "Ubacim plus moju poruku";
};
 


e sad, da nakon toga uradis redirect (ako user klikne na cancel) to je malo zeznuto. ocito ne mozes to u onbeforeunload jer imas return, mozda kada bi koristio tajmer ali to uopste nije dobro/pouzdano resenje.

nisam nikada radio nista slicno tome, ali mi sad pade jedna ideja na pamet: pokusaj da pre return dodelis fokus nekom inputu na strani, on bi trebao da izgubi focus cim se pojavi confirmation dialog i da ga ponovo dobije kada se confirmation dialog zatvori. samo treba da se nakacis na onfocus i da pratis stanje (npr pre prikazivanja dialoga setujes neku promenljivu na 0 i u onfocus je inkrementujes, kada vrednost bude 2 onda odradis redirekt, naravno moras da vodis racuna da se inkrementacija radi samo nakon pozivanja onbeforeunload)

nemam sad vremena da isprobam ovu teoriju ali mislim da bi moglo da prodje (pod uslovom da browser nakon zatvaranja dialoga vraca fokus predhodno fokusiranom elementu)
 
Odgovor na temu

sojic
Dalibor Sojic
Makedonija

Član broj: 7051
Poruke: 796
*.home.otenet.gr.

Sajt: right-sock.net


+1 Profil

icon Re: window.onbeforeunload24.08.2010. u 15:13 - pre 166 meseci
To return oko poruke, manje bitno....

E sad... kao sto sam pisao u prethodnoj poruci... onbeforeunload nece moci... zato sto beforeunload se poziva kad pokusam da zatvorim prozor, ILI KAD MENJAM STRANU... tu ulazimo u beskonacni cikus... ja pokusam da zatvorim stranu, pozoven beforeunload.... zadim 'redirektujem' na drugu stranu, sto je opet "beforeunload"....

Znaci...

1. Da detektujem event "close" na browseru ili...
2. Dajte predlog :)


routing protocols enable routers to route routed protocols!
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-1.sezampro.yu.



+33 Profil

icon Re: window.onbeforeunload24.08.2010. u 15:31 - pre 166 meseci
A možda da probaš nešto u kombinaciji sa onunload event-om... On će biti trigger-ovan kad korisnik zaista napusti neku stranicu.
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: window.onbeforeunload24.08.2010. u 15:52 - pre 166 meseci
pa opet moze ista fora sa focusom, ako sam te ja dobro razumeo. samo pre nego sto uradis redirekt setuj neki flag koji ces da proveravas u onbeforeunload, inace onunload neces moci da koristis jer se on poziva kada se prozor zatvara (ili se odlazi na drugu stranu) i ne mozes da ga cancelujes.

npr:
Code (javascript):

var redirecting = false, state = false;
...
window.onbeofreunload = function() {
   if (!redirecting) {
      state = 0;
      someInput.focus();
      return 'Poruka';
   }
};
...
someInput.onfocus = function() {
   if (state !== false && ++state == 2) {
     redirecting = true;
     state = false;
     location.href = '...';
   }
};
 

 
Odgovor na temu

sojic
Dalibor Sojic
Makedonija

Član broj: 7051
Poruke: 796
*.home.otenet.gr.

Sajt: right-sock.net


+1 Profil

icon Re: window.onbeforeunload24.08.2010. u 17:00 - pre 166 meseci
Da, to je to... radi :)

Ipak... u medjuvremenu, meni dosla ideja da uradim sa jQuery: "bindujem" unload na window.... kasnije... (ili ako je neki interni link) "unbindujem".... ali nisam pokusao... mozda ako ima potreba od komplikacije pokusam i to....

Inace, za skripti HVALA PUNO. Imas pivo :)
routing protocols enable routers to route routed protocols!
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: window.onbeforeunload24.08.2010. u 17:33 - pre 166 meseci
super ako radi, znaci da mi je pretpostavka bila na mestu :)

ali opet, savetujem ti da proveris resenje u par browsera (ff i ie obavezno) pre nego sto otpises kao reseno...
 
Odgovor na temu

sojic
Dalibor Sojic
Makedonija

Član broj: 7051
Poruke: 796
*.home.otenet.gr.

Sajt: right-sock.net


+1 Profil

icon Re: window.onbeforeunload26.08.2010. u 02:24 - pre 166 meseci
Obrati paznju na bolje resenje:

Code:

<script type="text/javascript">
//<![CDATA[
var
  is_asked = false;

window.onbeforeunload = 
  function (ev) {
    var e = ev || window.event;
    window.focus();
    if (!is_asked){
      is_asked = true;
      var showstr = "CUSTOM_MESSAGE";
      if (e) {  //for ie and firefox
        e.returnValue = showstr; 
      }
      return showstr; //for safari and chrome
    }
  };

window.onfocus =
  function (ev){
    if (is_asked){
      window.location.href = "http://www.google.com";
    }
  }

//]]>
</script>




Isto sa focusom, ali mi ne treba input polje.
routing protocols enable routers to route routed protocols!
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: window.onbeforeunload26.08.2010. u 09:41 - pre 166 meseci
da, to jeste bolje resenje, nema potrebe da koristis jos i input element. ako jos radi svuda onda je to to, ja sam za input bio poprilicno siguran da ce da izgubi focus kada izadje confirmation dialog, i da ga ponovo dobije posle, ali za window nisam, mada ni jedno ni drugo nisam nikada testirao.

u svakom slucaju, svaka cast na ovom resenju :)
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-5.sezampro.rs.



+33 Profil

icon Re: window.onbeforeunload26.08.2010. u 10:04 - pre 166 meseci
A evo odakle potiče to rešenje: http://forums.digitalpoint.com/showthread.php?t=1916387, pošto je ova ista tema post-ovana na još jednom forumu.
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: window.onbeforeunload26.08.2010. u 12:08 - pre 166 meseci
great minds think alike :p
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-a-2.sezampro.yu.



+395 Profil

icon Re: window.onbeforeunload26.08.2010. u 12:55 - pre 166 meseci
Jel ima negde opis strukture ev koja se prosledjuje f-ji onbeforeunload?

Viva lollapalooza
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: window.onbeforeunload26.08.2010. u 14:32 - pre 166 meseci
za koji browser? :)

evo ti jedan quirksmode artikal citaj ga i prati linkove...

inace, ukoliko koristis jQuery on normalizuje Event objekat tako da ti je u svim browserima isti, vise detalja na http://api.jquery.com/category/events/event-object/
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-a-2.sezampro.yu.



+395 Profil

icon Re: window.onbeforeunload26.08.2010. u 14:41 - pre 166 meseci
Cudi me da se u tom event objectu za f-iju onbeforeunload ne prosledjuje flag uzroka napustanja stranice



Viva lollapalooza
 
Odgovor na temu

[es] :: Javascript i AJAX :: window.onbeforeunload

[ Pregleda: 2103 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.