Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][JavaScript]Optymalizacja JavaScript (odliczanie)
szymek001
post
Post #1





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 21.09.2005

Ostrzeżenie: (10%)
X----


Witam, potrzebuję zrobić skrypt w stylu 4shared, który po skończonym odliczaniu pokaże przycisk do pobrania pliku, póki co poskładałem coś takiego, ale chyba nie jest to zbyt zoptymalizowane, bo gdy mamy otwarte więcej kart w Firefoxie, to odliczanie zamula (np. odlicza 15, 7, 0), czasem przycisk pokazuje się przed zakończaniem odliczania itp.:
  1. <body onload="time()">
  2.  
  3. <script type="text/javascript">
  4. var sec = 16;
  5. function time() {
  6. if(sec >= 1) {
  7. sec--;
  8. document.getElementById('odliczanieczasu').innerHTML=(sec);
  9. setTimeout("time();", 1000);
  10. }
  11. }
  12. </script>
  13.  
  14. <script type="text/javascript">
  15. function pokazprzycisk(){
  16. document.getElementById('przycisk').style.display='block';
  17. return false;
  18. }
  19. setTimeout("pokazprzycisk()",16*1000);
  20. <span id="odliczanieczasu">16</span><br>
  21. <input class="special" type="button" value="Pobierz" style="display: none;" id="przycisk" onclick="location.href = '<?=$file['pokaż_link']?>'; return false;">
  22.  


Co tu można zmienić, by chodziło to lepiej? może połączyć skrypt odliczania z pokazywaniem linka? Z góry dziękuję za wszelką pomoc i pozdrawiam! winksmiley.jpg
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A czytał ty kiedy do czego służy setInterval?
A potem clearInterval?


--------------------
Go to the top of the page
+Quote Post
szymek001
post
Post #3





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 21.09.2005

Ostrzeżenie: (10%)
X----


chodzi Ci o to, by na starcie dać setInterval, a po zakończonym odliczaniu użyć clearInterval?
Cytat(wookieb @ 19.12.2010, 08:51:16 ) *
A czytał ty kiedy do czego służy setInterval?

pogooglowałem teraz trochę i znalazłem bardzo fajny i bardzie rozbudowany skrypcik odliczania: http://www.java2s.com/Code/JavaScript/Deve...ntdownTimer.htm jednak nie ma on w sobie też metod setInterval() i clearInterval().
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




To, że tam tak zrobili to wcale nie znaczy, że jest dobrze.
timeout słiuży do pojedynczego odliczenia czasu a nie cyklicznego (interval).
Nie czyszczenie (clearTimeout, clearInterval) wielu "opóźnień czasowych" powoduje problemy z wydajnością przeglądarki. Wszystko zaczyna chodzić znacznie wolniej.

Ten post edytował wookieb 19.12.2010, 19:07:39


--------------------
Go to the top of the page
+Quote Post
smietek
post
Post #5





Grupa: Zarejestrowani
Postów: 306
Pomógł: 32
Dołączył: 20.01.2008

Ostrzeżenie: (20%)
X----


Najbardziej optymalny licznik w JavaScipcie korzysta z setInterval oraz różnicy obecnej daty ze znacznikiem danego wydarzenia.
Interval ma za zadanie co sekundę przeliczyć tą różnicę - dzięki temu nie ma opóźnień przy długich czasach (gdyby Interval miał np. odejmować co sekundę 1 od licznika, po kilku minutach miałbyś już opóźnienie o kilka sekund).


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 10:13