ugrás a tartalomhoz

Felugró ablakok kezelése

therest · 2012. Május. 9. (Sze), 12.36
Sziasztok!

Ha tudom egy popup ablak id-jét (amelyiket a window.open-nek megadtam paraméterül), akkor valahogy el tudom érni, miután elvesztem a rá mutató változómat? Mert a felhasználó frissíti a főablakot, vagy elnavigál máshova, majd visszatér. Azaz újra legyen egy változóm, ami rá mutat. Az nem megoldás, hogy újratöltöm a tartalmát, mert fontos, hogy az ablakban esetlegesen (de nem biztosan) futó flash alkalmazást ne bántsam.
 
1

Nem

Poetro · 2012. Május. 9. (Sze), 14.48
Abba az ablakba maximum linkeket és űrlap küldéseket tudsz később irányítani a target attribútum megadásával. Az olyan alkalmazásoknál, ahol erre szükség van inkább használj AJAX-ot, hogy meg tudd tartani a referenciát az ablakra, vagy felejtsd el a felugró ablakot (egyáltalán használ még valami popup-ot?).

Amit még tehetsz, hogy a window.opener használatával kísérletezel a popup ablakban.
2

Hát nem nagyon tudom

therest · 2012. Május. 9. (Sze), 15.22
Hát nem nagyon tudom megkerülni a popup-ot. Pl ha div-ekre cserélném akkor maximum úgy tehetném, ha a felhasználót kötelezem, hogy maradjon azon az oldalon. Ez sajnos nem igazán lenne felhasználóbarát,és ismerve az átlagfelhasználót tutira ráfrissít, "ránéz fészre" majd visszanavigál, és utána felháborodik, hogy miért bukta, az adott tartalmat.
Az ablakokban érzékeny folyamatok (konkrét játékmenetek) mennek, amiknek a zavartalan futását leginkább akkor látom biztosítottnak ha maradok a popup-nál, hiszen így legalább attól nem kell félni, hogy a felhasználó elkezd navigálgatni.
3

bukta?

Poetro · 2012. Május. 9. (Sze), 15.34
Miért bukta volna a tartalmat? Annyi módja van már annak, hogy a böngésző emlékezzen dolgokra (localStorage, sessionStorage, cookie, flash SharedObject stb.). Az, hogy a felhasználó elnavigál nem jelenti azt, hogy minden, amit eddig csinált elveszett. Csak el kell okosan tárolni.
4

A kis ablakokban flash

therest · 2012. Május. 9. (Sze), 16.29
A kis ablakokban flash játékok futnak (változó komplexitásúak), amik ráadásul masszívan kommunikálnak egy szerverrel (port alapon). Ha div-eket használnék akkor a flash-es tartalomnak tuti annyi a frissítésnél, meg az elnavigálásnál.
A nagy ablakokban (opener), a egyéb szolgáltatások vannak, statok, progress, stb.

Tegyük fel a lobbiban van egy "new game" gomb. Rákattintás esetén dob egy új ablakot.
A problémát az okozza jelenleg, hogy mi van ha a user elnavigál, vagy frissít, és utána ismét "new game" gombra kattint. Ekkor nincs meg a referencia a popup-ra, és újra feldobom, ami nem jó mert esetleg megszakít egy már futó játékot.
Persze sütikkel lehet trükközni, de azok le lehetnek tiltva, vagy törölheti őket, stb.
Van előttem több módszer, amiknek a közös használatával, normális működés, és beállítások esetén minden oké.
Viszont vannak olyan helyzetek amikor a user extrán hülye, és persze utána neki áll feljebb, na ezeket akarnám minimálisra szűkíteni.
5

Szólj

Poetro · 2012. Május. 9. (Sze), 18.03
Szólj a felhasználónak! Ha használtál már Google termékeket, akkor azok egy része még ma is szól, ha újra akarod tölteni az oldalt, illetve el akarsz navigálni de még nem mentetted el, ahol tartasz. Ezt te is megteheted. Például onbeforeunload eseményre figyelve szólhatsz a felhasználónak, hogy ha elmegy, akkor megszakad a játék. Példa.