Autor | Zpráva | ||
---|---|---|---|
suvel Profil |
Zdá se, že při přepínání mezi záložkami okna nastanou problémy s intervaly. Ilustrační skript:
<div id="vypis1"></div> <script> function vypis(krok) { interval = setInterval(function(){ document.getElementById("vypis1").innerHTML = krok; krok--; if(krok == 0) { clearInterval(interval); } },200); } function test() { vypis(10); setTimeout(test,4000); } test(); </script> Skript opakovaně vypisuje čísla od 10 do 1. Nicméně, když se přepnu do jiné záložky (nedělá to vždy, ale stačí záložky chvíli přepínat), výpis se úplně zblázní - viz Živá ukázka Co se děle? A lze to nějak ošetřit? Díky předem za jakýkoli postřeh. Ještě doplňuji: Zkoušel jsem to v Chrome, Mozille, Oprře, Edge a IE11, zlobí to všude, pouze Opera a IE11 se kupodivu chovají ke skriptu slušně, ať přepínám, jak přepínám... |
||
Chamurappi Profil |
#2 · Zasláno: 30. 6. 2016, 13:54:43
Reaguji na suvela:
Je to úmyslná vlastnost – neaktivním tabům (nebo minimalizovanému oknu) se prodlužuje minimální délka časovaných události na jednu sekundu, aby zbytečně nezatěžovaly systém. Je to velmi rozumné opatření proti nerozumným webům. Vesměs nikdy není nutné provádět v neaktivní stránce úkony častěji než jednou za sekundu. Pokud si myslíš, že to potřebuješ, děláš něco špatně. |
||
suvel Profil |
#3 · Zasláno: 30. 6. 2016, 15:05:55
Chamurappi:
OK, děkuji za vysvětlení. Ale navíc se zdá, že po deaktivaci tabu už nefunguje clearInterval ... Ve skriptu je podmínka, která by i po prodloužení intervalu měla interval zrušit. Což se evidentně nestane.
|
||
Chamurappi Profil |
#4 · Zasláno: 30. 6. 2016, 16:13:34
Reaguji na suvela:
Máš svůj pokus špatně navržený. To, že se 200 ms protáhne na jednu sekundu, neznamená, že se i 4000 ms protáhnou na pětinásobek. Pracuješ s jednou globální proměnnou interval , takže při druhém zavolání ji přepíšeš, dřív, než došlo ke clearInterval u.
Na clearInterval se samozřejmě spolehnout dá.
|
||
KryVosa Profil |
#5 · Zasláno: 30. 6. 2016, 16:41:47
Ještě doplňková otázka: Probíhají smyčky (
for , while ) i při deaktivaci tabu?
Zkoušel jsem to zde, ale uspokojivé výsledky jsem nedostal... |
||
suvel Profil |
#6 · Zasláno: 30. 6. 2016, 17:04:35
Chamurappi:
Aha, no jo :-) Dík |
||
Keeehi Profil |
#7 · Zasláno: 30. 6. 2016, 17:20:37
Ono taky bude záležet na tom, jak dlouho bude záložka neaktivní a kolik bude dalších. Chrome zkouší zabíjení těch neaktivních.
|
||
Časová prodleva: 9 let
|
0