Új hozzászólás Aktív témák

  • dqdb

    nagyúr

    válasz Taci #8828 üzenetére

    Alapvetően hibás, amit csinálni szeretnél. Persze mindenki valami hasonlót szeretne elérni, amikor először kell aszinkron hívást beépíteni az addig szinkron homokozójába, de ettől még nem így kell :DDD

    1. az adatbázis-lekérdezés előtt letiltasz minden beviteli mezőt
    2. a lekérdezés befejezésekor lefutó callbackben engedélyezed a mezőket
    A módszer hátránya, hogy a letiltás látható változást hoz, ami gyors lefutás esetében zavaró villogást eredményezhet.

    1. az adatbázis-lekérdezés előtt az előtérbe hozol egy teljes oldalt lefedő 100%-os átlátszóságú DIV-et, ami az egéreseményeket blokkolja az oldalon található elemek elől, a billentyűzetről neked kell gondoskodnod a fókusz valahová áthelyezésével
    2. a lekérdezés befejezésekor lefutó callbackben a háttérbe küldöd a DIV-et
    A módszer hátránya, hogy lassú lefutás esetében a felhasználó azt érzékeli, hogy "lefagyott" az oldal, mert akárhová klikkel, nem reagál

    1. az adatbázis-lekérdezés előtt ugyanazt csinálod, mint az előző megoldásban és setTimeout segítségével ~300 ms késleltetéssel (a pontos értéket neked kell kikísérletezni, hogy a felhasználónak ne villogjon feleslegesen a képernyő, de ne érezze azt sem, hogy "lefagyott" az oldal)
    2. ha a setTimeout callback fut le először, akkor előtérbe hozol egy másik teljes képernyős DIV-et, ami részlegesen átlátszó és rajta szöveggel, hogy várjon a user
    2. a lekérdezés befejezésekor lefutó callbackben tolsz egy cancelTimeout-ot, és a háttérbe küldöd mindkét DIV-et

Új hozzászólás Aktív témák