Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jQuery] Wyświetlanie div w trybie ciągłym. Odporne na odświeżanie
ksiezulekwwo
post 14.04.2012, 15:17:22
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 14.04.2012

Ostrzeżenie: (0%)
-----


Witam wszystkich
Od paru dni piszę stronę inetrnetową i potrzebuję skryptu który będzie na samym początku chował a potem po kolei wyświetlał divy.
Zastosowałem jquery no i wyszło:

  1. $(document).ready(function() {
  2. $("div.a1").slideUp(0).delay(100000).fadeIn(400);
  3. $("div.a2").slideUp(0).delay(90000).fadeIn(400);
  4. $("div.a3").slideUp(0).delay(80000).fadeIn(400);
  5. $("div.a4").slideUp(0).delay(70000).fadeIn(400);
  6. $("div.a5").slideUp(0).delay(60000).fadeIn(400);
  7. $("div.a6").slideUp(0).delay(50000).fadeIn(400);
  8. $("div.a7").slideUp(0).delay(40000).fadeIn(400);
  9. $("div.a8").slideUp(0).delay(30000).fadeIn(400);
  10. $("div.a9").slideUp(0).delay(20000).fadeIn(400);
  11. $("div.a10").slideUp(0).delay(10000).fadeIn(400);
  12. });

Jak widzimy skrypt wyświetla kolejne divy po określonym czasie, jednak ja chciałbym aby te divy były wyświetlane w sposób ciągły tj. nawet po odświeżeniu lub opuszczeniu chwilowo strony, a mój skrypt rzecz jasna zaczyna pracę od nowa po każdym ponownym załadowaniu. No i tutaj bardzo prosiłbym o jakąś pomoc, myślałem że może można coś z cookies porobić jednak nic mi nie wychodzi a nie chciałbym podpinać pod to żadnego php. Będę wdzięczny chociaż za jakieś sugestie jak to można zrobić, gdyż w jquery pracuję dopiero 1 dzień sad.gif
Go to the top of the page
+Quote Post
tolomei
post 14.04.2012, 17:08:21
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

Ostrzeżenie: (0%)
-----


Czyli za pierwszym razem, gdy użytkownik odwiedza stronę to ma mu zadziałać skrypt, a później już ma być cały czas widoczne normalnie tak?
Najbardziej pasowałoby tu utworzyć zmienną sesyjną.

  1. <?php
  2. ?>
  3. <html>
  4. <head>
  5. <script type="text/javascript" src="jquery.js"></script>
  6. <script type="text/javascript">
  7. $(function(){
  8. <?php
  9. if(isset($_SESSION['skrypt'])) {
  10. echo 'var skrypt_start = 1;';
  11. } else {
  12. $_SESSION['skrypt'] = 1;
  13. echo 'var skrypt_start = 0;';
  14. }
  15. ?>
  16. if(skrypt_start == 1) {
  17. $("div.a1").slideUp(0).delay(100000).fadeIn(400);
  18. $("div.a2").slideUp(0).delay(90000).fadeIn(400);
  19. $("div.a3").slideUp(0).delay(80000).fadeIn(400);
  20. $("div.a4").slideUp(0).delay(70000).fadeIn(400);
  21. $("div.a5").slideUp(0).delay(60000).fadeIn(400);
  22. $("div.a6").slideUp(0).delay(50000).fadeIn(400);
  23. $("div.a7").slideUp(0).delay(40000).fadeIn(400);
  24. $("div.a8").slideUp(0).delay(30000).fadeIn(400);
  25. $("div.a9").slideUp(0).delay(20000).fadeIn(400);
  26. $("div.a10").slideUp(0).delay(10000).fadeIn(400);
  27. }
  28. });
  29. </script>
  30. ...


To jedna z możliwości.

Pozdrawiam.


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
ksiezulekwwo
post 14.04.2012, 21:11:33
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 14.04.2012

Ostrzeżenie: (0%)
-----


Sorry, nie chce być upierdoliwy ale nie działa i nie mogę sobie poradzić z tym. Działa tylko sam skrypt ale bez "odporności na odświeżanie". To ma działać tak, użytkownik wchodzi uruchamia sie skrypt i działa przez określony czas ( ustawiony przeze mnie oczywiście), nawet jeżeli użytkownik odświeży stronę lub na chwilę ją opuści, ale wróci zanim skrypt nie skończy pracy.
Poniżej wklejam kod jaki dałem w pliku index.php, nie wywala błędów ale nie działa, może coś nie tak zrobiłem?

  1. <?php
  2. session_start();
  3. ?>
  4. <link type="text/css" rel="stylesheet" media="all" href="style.css">
  5. <script src="http://code.jquery.com/jquery-latest.js"></script>
  6. </head>
  7. <script type="text/javascript">
  8. $(function(){
  9. <?php
  10. if(isset($_SESSION['skrypt'])) {
  11. echo 'var skrypt_start = 1;';
  12. } else {
  13. $_SESSION['skrypt'] = 1;
  14. echo 'var skrypt_start = 0;';
  15. }
  16. ?>
  17. if(skrypt_start == 1) {
  18. $("div.a1").slideUp(0).delay(25000).fadeIn(400);
  19. $("div.a2").slideUp(0).delay(20000).fadeIn(400);
  20. $("div.a3").slideUp(0).delay(15000).fadeIn(400);
  21. $("div.a4").slideUp(0).delay(10000).fadeIn(400);
  22. $("div.a5").slideUp(0).delay(6000).fadeIn(400);
  23.  
  24. }
  25. });
  26. </script>
  27. <div class="a1">tekst1</div><br />
  28. <div class="a2">tekst1</div><br />
  29. <div class="a3">tekst1</div><br />
  30. <div class="a4">tekst1</div><br />
  31. <div class="a5">tekst1</div><br />
  32. </body>
  33. </html>


I wogóle teraz sie skapłem że chyba źle mnie zrozumiałeś biggrin.gif bo twój kod kompletnie nie ma prawa działać tak jak chcę sad.gif
Może ktoś podsunie jakiś pomysł jak to można najprościej rozwiązać?
Go to the top of the page
+Quote Post
tolomei
post 14.04.2012, 21:45:28
Post #4





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

Ostrzeżenie: (0%)
-----


Już rozumiem o co Ci chodzi.
Czyli jak odświeżę stronę dokładnie w połowie wykonywania się skryptu - to po przeładowaniu on dokończy swoje działanie dokładnie od miejsca w którym przerwał.

Tak ?


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
ksiezulekwwo
post 14.04.2012, 23:28:18
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 14.04.2012

Ostrzeżenie: (0%)
-----


Dokładnie tak. smile.gif
Go to the top of the page
+Quote Post
tolomei
post 14.04.2012, 23:40:30
Post #6





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

Ostrzeżenie: (0%)
-----


Trochę szalony pomysł, ale wykonalny.
Musiałbyś przynajmniej ze 2 razy na sekundę przesyłać ajaxem dane na temat czasu jaki pozostał kolejnym zdarzeniom do końca ich animacji.
Serwer automatycznie zapisywałby to w sesji tak, aby po przeładowaniu strony mógł ustawić konkretne czasy każdemu z elementów.

Może ktoś ma inny pomysł?


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
#luq
post 15.04.2012, 08:31:18
Post #7





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


Cytat(tolomei @ 15.04.2012, 00:40:30 ) *
Może ktoś ma inny pomysł?

localStorage lub ciastka


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
tolomei
post 15.04.2012, 08:50:53
Post #8





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

Ostrzeżenie: (0%)
-----


Możesz użyć zdarzenia onBeforeUnload w JavaScripcie. Zdarzenie potrafi wykryć, że okno dostało polecenie przeładowania/zamknięcia i na krótko przed tym potrafi wykonać jakąś funkcję jeszcze. W tej funkcji możesz wrzucić np. JSON-a do web storage i później to odczytać - dokładnie tak jak zaproponował #luq.


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
ksiezulekwwo
post 15.04.2012, 10:11:49
Post #9





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 14.04.2012

Ostrzeżenie: (0%)
-----


Cytat(tolomei @ 15.04.2012, 09:50:53 ) *
Możesz użyć zdarzenia onBeforeUnload w JavaScripcie. Zdarzenie potrafi wykryć, że okno dostało polecenie przeładowania/zamknięcia i na krótko przed tym potrafi wykonać jakąś funkcję jeszcze. W tej funkcji możesz wrzucić np. JSON-a do web storage i później to odczytać - dokładnie tak jak zaproponował #luq.


Dzięki za sugestie, spróbuje twoją metodą ale szczerze mówiąc dla mnie to trudne, narazie spróbuje na samych cookies to zrobić bez ajaxa, mam jeden pomysł i oby wyszło. A jeśli to to istnieje możliwość jakiejś pomocy z twojej strony? Jeżeli to nie skomplikowane to możemy sie umówić na jakąś zapłatę.
Go to the top of the page
+Quote Post
tolomei
post 15.04.2012, 10:19:45
Post #10





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

Ostrzeżenie: (0%)
-----


Ja za pomoc na forum opłat nie pobieram smile.gif
Mogę Cię naprowadzić, ale będziesz musiał zrobić to sam.


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
ksiezulekwwo
post 15.04.2012, 10:34:14
Post #11





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 14.04.2012

Ostrzeżenie: (0%)
-----


Cytat(tolomei @ 15.04.2012, 11:19:45 ) *
Ja za pomoc na forum opłat nie pobieram smile.gif
Mogę Cię naprowadzić, ale będziesz musiał zrobić to sam.


No ok:D próbuje sam na cookies samych i javascript, mam tylko pytanie, czy jest możliwość zatrzymania wykonywania danego skryptu a konkretniej pętli w javascript? To znaczy bez spełnienia żadnych warunków nagle się ma zatrzymać. Napisałem kod który wysyła co pewien czas inne ciasteczko do użytkownika w trakcie jego pobytu na stronie i chciałbym aby po wysłaniu każdego nowego ciasteczka skrypt się zatrzymał i uruchomił dopiero po ponownym zaladowaniu strony.
Go to the top of the page
+Quote Post
tolomei
post 15.04.2012, 10:41:20
Post #12





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

Ostrzeżenie: (0%)
-----


Zawsze możesz wstawić break; wewnątrz pętli. Po jego wystąpieniu następuje wyskok z pętli(działanie skryptu za pętlą jest kontynuowane).
O to pytałeś ?

Jak chcesz przerwać cały skrypt to najlepiej wsadzić ten skrypt w funkcję i wtedy dać odpowiednie polecenie return i funkcja zostanie zakończona.


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
ksiezulekwwo
post 15.04.2012, 10:49:31
Post #13





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 14.04.2012

Ostrzeżenie: (0%)
-----


Cytat(tolomei @ 15.04.2012, 11:41:20 ) *
Zawsze możesz wstawić break; wewnątrz pętli. Po jego wystąpieniu następuje wyskok z pętli(działanie skryptu za pętlą jest kontynuowane).
O to pytałeś ?

Jak chcesz przerwać cały skrypt to najlepiej wsadzić ten skrypt w funkcję i wtedy dać odpowiednie polecenie return i funkcja zostanie zakończona.


Tak o break mi chodziło właśnie dzięki smile.gif No nic idę kodzić i popróbuję, może coś wyjdzie, onBeforeUnload wolałbym nie używać, natomiast interesująca jest metoda z ajaxem, a jak wysyłać co 2 sekundy dane ? Można zastosować settimeout w javascript? I czy można to zapisać jakoś w cookies zamiast w sesji ? Ten ajax to bedzie alternatywa jakby nie wyszlo z samym cookies.
Go to the top of the page
+Quote Post
tolomei
post 15.04.2012, 11:03:20
Post #14





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

Ostrzeżenie: (0%)
-----


Możesz użyć setTimeout() zarówno do żądań ajaxowych jak i do aktualizacji ciasteczek. Przy ciasteczkach miałbyś mniejsze straty czasu na pewno.


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
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 Wersja Lo-Fi Aktualny czas: 28.06.2025 - 00:36