Eredmény: 1 - 6 (6) összesen

Téma: Ablak bezárása előtti esemény

  1. #1
    Bölcs lauda logója
    Csatlakozott
    09-02-24
    Hely
    Salgótarján
    Hozzászólás
    505
    Begyűjtött 12 köszönetet
    9 hozzászólásával

    Alapbeállítás Ablak bezárása előtti esemény

    Segítségetek szeretném kérni. Meg kell oldanom azt, hogy ha bezár az user egy ablakot akkor előtte még egy adatbázisba írjon adatot.

    Van most egy megoldásom, de nem 100%-ban működik (legtöbbször igen, de néha nem), most olyat keresek ami 100%-os. Eddig van egy ilyenem:

    Kód:
    window.onbeforeunload=function(){jatektorol();alert ('Sikeresen kijelentkeztél a játékból!');}
    a jetektorol() függvény küldi ajaxxal a php-nek a kilépést. Az alert azért van ott, mert vagy a chrome-ban vagy a firefoxban csak azzal működik, alert nélkül nem. Ez így egy eléggé 'összeszögelt' megoldás, abban sem vagyok biztos, hogy javascripttel lehet megoldani. Még a sessiont sem használtam sosem, lehet abban lenne a megoldás de nem találok róla jó magyar nyelvű leírást amiből megérteném mire is jó az.


    Utoljára módosítva: Geri által : 2012-12-17 13:49

  2. #2
    Rubyist Geri logója
    Csatlakozott
    07-12-15
    Hely
    \x90
    Hozzászólás
    5.744
    Begyűjtött 1.428 köszönetet
    892 hozzászólásával

    Alapbeállítás re: Ablak bezárása előtti esemény

    Igy mar menni fog:

    Idézet lauda eredeti hozzászólása Hozzászólás megtekintése
    Kód:
    window.onbeforeunload=function(){
    jatektorol();
    alert ('Sikeresen kijelentkeztél a játékból!');
    return false;
    }
    ---------------



  3. #3
    Törzsvendég Rosszcsont Rozmár logója
    Csatlakozott
    12-07-04
    Hozzászólás
    111
    Begyűjtött 27 köszönetet
    23 hozzászólásával

    Alapbeállítás re: Ablak bezárása előtti esemény

    100%-os megoldásban ne is reménykedj. User letiltja a JS-t, user kihúzza a tápkábelt/hálókábelt a gépből, stb... Ami a legközelebb áll a 100%-hoz, ha fordítva közelíted meg. JS setTImeout-tal beállítasz egy időzítést ami mondjuk 3 percenként odaszól a szervernek, hogy "még itt vagyok". A szerveren meg ha eltelt 3 és fél perc és nem jött ilyen üzenet, akkor kijelentkezteti. Persze meg lehet hagyni a fenti megoldást is mellette, akkor 99%-ban azonnal megtörténik a kiléptetés, néha meg max 3 perccel később.

    Arra figyelj szerver oldalon, hogy mi van, ha 3 percen belül újra belép, nem zavarodjon össze a szerver!



  4. #4
    Rubyist Geri logója
    Csatlakozott
    07-12-15
    Hely
    \x90
    Hozzászólás
    5.744
    Begyűjtött 1.428 köszönetet
    892 hozzászólásával

    Alapbeállítás re: Ablak bezárása előtti esemény

    Valoban nem 100%-os. setTimeout helyett setInterval jobb mert akkor az X idonkent odaszol a szervernek. A legjobb ugye a masodpercenkent lenne, de az kinyirja a legtobb szervert, ezert en inkabb nodejs-el, vagy rubyval(puma) csinalnek ilyen alkalmazast.
    Nodejs-hez van a socket.io(Socket.IO: the cross-browser WebSocket for realtime apps.), amivel par soros koddal tudsz egy long polling alkalmazast osszerakni.


    If debugging is the process of removing software bugs, then programming must be the process of putting them in.
    Ruby blog
    Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime.
    Respect all, fear none

  5. #5
    Bölcs lauda logója
    Csatlakozott
    09-02-24
    Hely
    Salgótarján
    Hozzászólás
    505
    Begyűjtött 12 köszönetet
    9 hozzászólásával

    Alapbeállítás re: Ablak bezárása előtti esemény

    Megcsináltam Geri amit írtál. Már emlékszem rá utólag hogy próbálkoztam vele korábban. A return false-tól egy üzenetablak ugrik fel firefoxban (chrome-ban nem): 'Az oldal azt kéri, hogy erősítse meg kilépési szándékát – a beírt adatok nem feltétlenül vannak mentve.'. Előtte meg persze azt is, hogy 'Sikeresen kijelentkeztél a játékból.' Kicsit így nem felhasználóbarát mert 2 ablakot is be kell zárnia a játékosnak mielőtt kilép, de már azt sem bánom csak ne ragadjon be a tag a játékban. Köszi a nodejs tippet ezt nem ismertem, elolvasom. A helyzet az, hogy már kész a játék ezt a hibáját akarom kijavítani, ami jó szivatós mert 10-ből 1x fordul elő. A settimeout -ban lehet el kell gondolkodnom, de a szervert mindképp kímélnem kell, így is van 3 másodpercenként lekérdezés. A játékot most megcsinálom úgy hogy ti is ki tudjátok próbálni, estére lehet kész lesz, akkor majd beteszem a linket. Köszi az eddig tippet mindkettőtöknek.



  6. #6
    Bölcs lauda logója
    Csatlakozott
    09-02-24
    Hely
    Salgótarján
    Hozzászólás
    505
    Begyűjtött 12 köszönetet
    9 hozzászólásával

    Alapbeállítás re: Ablak bezárása előtti esemény

    Megcsináltam úgy hogy ti is lássátok miről van szó. Betettem a honlap kritikába zsírozás kártyajáték címmel.



A téma címkéi:

Könyvjelzők

Hozzászólás szabályai

  • Új témákat nem hozhatsz létre
  • Válaszokat nem küldhetsz
  • Fájlokat nem csatolhatsz
  • A hozzászólásaidat nem módosíthatod
  •