Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 14 odgovora
  • 3.200 pregleda

Najnovija ↓

window.onbeforeunload 24.08.2010. u 13:27 · pre 197 meseci #1
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?
Potpis
routing protocols enable routers to route routed protocols!
Re: window.onbeforeunload 24.08.2010. u 14:33 · pre 197 meseci
izmenjeno 1 put, poslednji put sojic 24.08.2010. u 14:46
  1. sojic24.08.2010. u 14:46zapis iz teksta poruke
#2
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.
Potpis
routing protocols enable routers to route routed protocols!
Re: window.onbeforeunload 24.08.2010. u 15:11 · pre 197 meseci #3
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)
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: window.onbeforeunload 24.08.2010. u 16:13 · pre 197 meseci #4
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 :)

Potpis
routing protocols enable routers to route routed protocols!
Re: window.onbeforeunload 24.08.2010. u 16:31 · pre 197 meseci #5
A možda da probaš nešto u kombinaciji sa onunload event-om... On će biti trigger-ovan kad korisnik zaista napusti neku stranicu.
Re: window.onbeforeunload 24.08.2010. u 16:52 · pre 197 meseci #6
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 = '...';
   }
};
 
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Sviđa mi se1
Re: window.onbeforeunload 24.08.2010. u 18:00 · pre 197 meseci #7
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 :)
Potpis
routing protocols enable routers to route routed protocols!
Re: window.onbeforeunload 26.08.2010. u 03:24 · pre 197 meseci #9
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.
Potpis
routing protocols enable routers to route routed protocols!
Re: window.onbeforeunload 26.08.2010. u 10:41 · pre 197 meseci #10
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 :)
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: window.onbeforeunload 26.08.2010. u 13:55 · pre 197 meseci #13
Jel ima negde opis strukture ev koja se prosledjuje f-ji onbeforeunload?
Potpis
Viva lollapalooza
Re: window.onbeforeunload 26.08.2010. u 15:32 · pre 197 meseci #14
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/
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: window.onbeforeunload 26.08.2010. u 15:41 · pre 197 meseci #15
Cudi me da se u tom event objectu za f-iju onbeforeunload ne prosledjuje flag uzroka napustanja stranice


Potpis
Viva lollapalooza
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme