Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX][JavaScript][PHP]Rejestracja zamknięcia okna/zakładki
reseet
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 22.06.2015

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


Cześć wszystkim,

jest to mój pierwszy post na tym forum dlatego prosze o wyrozumiałość. Chce do swojego projektu wdrożyć funkcjonalność która będzie reagowała w momencie gdy użytkownik zamknie zakładke lub okno przeglądarki. Funkcjonalność ma zapisać takie zdarzenie do bazy danych jako wylogowanie za pomocą AJAXa. Posiadam skrypt który wykonuje tę operacje z tym że ma jeden minus. Gdy użytkownik ma otwarty system w dwóch zakładkach i zamknie jedna z nich to system traktuje to jako wylogowanie. Prawidłowo powinien zadziałać w momencie gdy nie ma już więcej otwartych zakładek z tym systemem.

Poniżej zamieszczam to co udało m isie zrobić:
  1. var validNavigation = false;
  2.  
  3. $(document).bind('keypress', function(e) {
  4. if (e.keyCode === 116){
  5. validNavigation = true;
  6. }
  7. });
  8. $("a").bind("click", function() {
  9. validNavigation = true;
  10. });
  11. $("form").bind("submit", function() {
  12. validNavigation = true;
  13. });
  14. $("input[type=submit]").bind("click", function() {
  15. validNavigation = true;
  16. });
  17.  
  18. function saveEvent() {
  19.  
  20. if (!validNavigation) {
  21. //AJAX
  22. }
  23.  
  24. };
  25.  
  26. window.parent.onbeforeunload = saveEvent;


JS nie jest moją mocna stroną dlatego kod wygląda jak wygląda.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
rad11
post
Post #2





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


Przegladarka(system) dobrze traktuje to tylko Ty zle to masz zaimplementowane. Przed zamykaniem zakladki oprocz zapisu tego do bazy powiniennes sprawdzic czy uzytkownik jest zalogowany/wylogowany i wtedy jesli np jest wylogowany to nie robisz inserta do bazy ale zamykasz okno bez zadnej akcji natomiast jezeli jest zalogowany to robisz insert do bazy i zamykasz okno czyli reasumujac:

1. klikasz zamkniecie zakladki
2. sprawdzasz czy w bazie danych uzytkownik jest zalogowany
3. jezeli jest zalogowany robisz insert ajaxem do bazy danych o evencie i zamykasz zakladke
4. jezeli jest juz wylogowany(bo juz np z tych dwoch zakladaek jedna zamknal) to zamykasz sama zakladke

Jezeli cos zle zrozumialem co miales na mysli to mnie popraw.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 5.10.2025 - 20:56