Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP]Przerwanie wykonywania funkcji i ponowne uruchomienie.
Forum PHP.pl > Forum > Przedszkole
ilidir
Witam mam poniższy kod
  1. $(function() {
  2. function timeChecker() {
  3. var timeStamp = new Date();
  4. sessionStorage.setItem("lastTimeStamp", timeStamp);
  5. setInterval(function() {
  6. var storedTimeStamp = sessionStorage.getItem("lastTimeStamp");
  7. timeCompare(storedTimeStamp);
  8. }, 3000);
  9. }
  10.  
  11. function timeCompare(timeString){
  12. var currenTime = new Date();
  13. var pastTime = new Date(timeString);
  14. var timeDiff = currenTime - pastTime;
  15. var minPast = Math.floor((timeDiff/60000));
  16. //console.log(pastTime +" "+ timeDiff +" "+ minPast);
  17.  
  18. if(minPast > 90) {
  19. var log_url = "<?php $logout = wp_logout_url($redirect); echo $logout; ?>"
  20. sessionStorage.removeItem("lastTimeStamp");
  21. window.location.replace(log_url);
  22. return false;
  23.  
  24.  
  25. }else {
  26. //console.log(currenTime +" - "+pastTime+" - "+minPast+ " min");
  27. }
  28.  
  29. }
  30.  
  31. $(document).mousemove(function(){
  32. var timeStamp = new Date();
  33. sessionStorage.setItem("lastTimeStamp", timeStamp);
  34.  
  35. });
  36. timeChecker();
  37.  
  38. });
  39.  



Funkcja startuje na końcu. Jednakże ja chciałbym ja zatrzymać w innej funkcji a następnie ja wywołać z tej funkcji dopiero.

Będę wdzięczny za pomoc. Pozdrawiam
trueblue
To w jakim celu ją startujesz na końcu? Nie możesz po prostu wywołać w innej funkcji?
ilidir
Jeżeli normalny użytkownik wchodzi na stronę i ją przegląda to chciałbym aby dla bezpieczeństwa po upływanie 91 minut bez ruchu nastąpiło auto wylogowanie. Jednakże jeżeli odpali podstronę (na przykład stronę z Video) w ramach przeglądanej strony to chciałbym żeby funkcja się przerwała bo na przykład film może trwać 100 minut a po 91 go wyloguje jeżeli nie ruszy myszką.
trueblue
Tu jest podobny problem: Temat: Zatrzymanie setinterval w przykladzie
ilidir
Cytat(trueblue @ 8.12.2021, 12:22:30 ) *


Dzięki,

czyli generalnie powinienem wywołać

clearInterval(timeChecker);

i to powinno zatrzymać wykonywanie funkcji.

pozdrawiam
trueblue
Generalnie, nie.
Przeczytaj jeszcze raz tamten temat.
ilidir
no tak nie funkcja a licznik interwalu

clearInterval(storedTimeStamp);

Generalnie mam problem bo nie wiem gdzie wywołać to czyszczenie żeby działało poprawnie.
trueblue
Generalnie tam gdzie opisywałeś, czyli kiedy odpalasz podstronę, np. z video, w ramach przeglądanej strony.
ilidir
ale to mam żywcem wywołać clearInterval(storedTimeStamp); questionmark.gif
trueblue
Nie wiem co masz na myśli pisząc "żywcem". Jeśli licznik ma się zatrzymać, to trzeba wywołać clearInterval, ale na pewno nie z parametrem storedTimeStamp.
ilidir
Mhm, dzięki

czyli może powinienem zrobić tak:
Kod
var interval = setInterval(function() {
            var storedTimeStamp = sessionStorage.getItem("lastTimeStamp");
            timeCompare(storedTimeStamp);
        }, 3000);


a później wywołać:
clearInterval(interval);

questionmark.gif?
com
no brawo
https://www.medianauka.pl/clearInterval-javascript smile.gif
ilidir
Jak wywołuje to czyszczenie z poziomu innej funkcji to mam komunikat:

Uncaught ReferenceError: interval is not defined
ilidir
Poszło dziękuje smile.gif
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.