Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Javascript prawidłowo wykonuje się w Chrome, nieprawidłowo w Firefox.
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
koxfx
  1. <script>
  2.  
  3.  
  4. $(document).ready(function() {
  5.  
  6.  
  7. var refresh = setInterval(function(){
  8. var elem = document.getElementById('zna');
  9. elem = $("#zna").load("test.php");
  10.  
  11.  
  12. }, 3000);
  13.  
  14. });
  15. $("#zna").mouseup(function(){
  16. setInterval(refresh,1000);
  17. });
  18.  
  19. $("#zna").mousedown(function(){
  20. clearInterval(refresh);
  21. });
  22.  
  23.  
  24.  
  25. </script>


Podobny kod kiedyś działał prawidłowo we wszystkich przeglądarkach.
Obecnie Firefox bez drugiego setInterval prawidłowo czyści Timer. Jeśli drugie setinterval występuje to mousedown jest ignorowane.
trueblue
Co to za kombinacja?
  1. var elem = document.getElementById('zna');
  2. elem = $("#zna").load("test.php");


Tu przekazujesz id licznika, nie funkcję.
  1. setInterval(refresh,1000);

Nawet nie, bo zmienna refresh jest poza zasięgiem tych dwóch funkcji.

Jaki efekt chcesz osiągnąć?
koxfx
  1. <script>
  2.  
  3.  
  4.  
  5. function odswiezaj()
  6. {
  7. $("#zna").load("test.php");
  8.  
  9.  
  10.  
  11. }
  12.  
  13.  
  14.  
  15.  
  16. $("#zna").mousedown(function(){
  17. clearInterval("odswiezaj()");
  18. });
  19.  
  20. $("#zna").mouseup(function(){
  21. setInterval("odswiezaj()",1000);
  22. });
  23.  
  24.  
  25.  
  26. </script>


Troche inny kod a objawy te same.

$("#zna").load("test.php"); ma się przestać wczytywać po wciśnięciu lewego przycisku myszy. Ma się ponownie wczytywać po jego zwolnieniu.
Comandeer
clearInterval należy przekazać id timera, zwracany przez setInterval, nie funkcję.
Kod
var timer = setInterval(function() {}, 1000);
clearInterval(timer);
koxfx
Jak zrobie tak to jest to samo.
  1. $("#zna").mouseup(function(){
  2. var stop = setInterval("odswiezaj()",1000);
  3. });
  4.  
  5. $("#zna").mousedown(function(){
  6. clearInterval(stop);
  7. });
trueblue
Zmienna stop jest niewidoczna dla clearInterval, miałeś indentyczną sytuację w pierwszym kodzie.
koxfx
  1. $("#zna").mouseup(function(){
  2. var stop = setInterval("odswiezaj()",1000);
  3.  
  4.  
  5. $("#zna").mousedown(function(){
  6. clearInterval(stop);
  7. });
  8.  
  9. });
  10.  


Zrobiłem tak i działa. Dziękuję.
trueblue
  1. var stop;
  2.  
  3. $("#zna").mouseup(function(){
  4. stop = setInterval("odswiezaj()",1000);
  5. });
  6.  
  7. $("#zna").mousedown(function(){
  8. if(stop) clearInterval(stop);
  9. });
  10.  
  11.  
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.