Autor | Zpráva | ||
---|---|---|---|
Skg Profil * |
#1 · Zasláno: 25. 4. 2020, 10:39:23
Dobré víkendové dopoledne,
mám jednoduchou javascriptovou funkci v PHP skriptu, která po stisknutí submitu formuláře načte z PHP časový limit v sekundách a pomocí setInterval odečítá načtenou hodnotu po sekundách k nule. Po vypršení limitu automaticky formulář odešle. Problém je, že u mobilu, který se při probíhajícím odpočtu uvede do úsporného režimu (a nejspíš i u PC), se odpočet zastaví. Po probuzení zařízení pak odpočet plynule naváže, ačkoliv už limit ve skutečnosti vypršel a já bych potřeboval, aby skript formulář ihned odeslal. Napadlo mě v určitém intervalu kontrolovat počet vteřin, které uplynuly od spuštění testu a při diferenci s odpočtem provést korekci, ale určitě existuje i elegantnější řešení. Byl bych rád, kdyby limit nezávisel na systémovém čase zařízení... Javascript používám doplňkově a moc systematických poznatků z něj nemám, takže než se pustím do zbytečně překombinovaného řešení, zkusil bych zde požádat o radu. Děkuji. <script type=\"text/javascript\"> var limit = $testLimitValue; setInterval(function() { if (limit < 1) { document.test$cH.submit(); } limit = limit-1; }, 1000); </script> |
||
Serg Profil |
#2 · Zasláno: 25. 4. 2020, 14:47:08
Já bych se klidně spolehnul na systémový čas.
Kdyby někdo chtěl obejít čekací dobu, a nebude to ošetřené na straně serveru, tak ji obejde. Např. otevřením konzole a změnou hodnoty proměnné limit, nebo změnou systémového času, to vyjde skoro nastejno. var limit = 10; // to predpokladam bude vlozene z php var wait_until = new Date(); wait_until.setSeconds(wait_until.getSeconds() + limit); var interval1 = setInterval(function() { var now = new Date(); if (wait_until < now) { document.test$cH.submit(); clearInterval(interval1); } // dalsi veci, jako zobrazeni odpoctu... jinak by stacil setTimeout }, 1000); |
||
Skg Profil * |
#3 · Zasláno: 25. 4. 2020, 15:42:26
Děkuji, ano, nakonec jsem to na podobném principu vykombinoval, ale ne tak úsporně a úhledně. Díky.
|
||
Časová prodleva: 4 roky
|
0