2011-07-07 15 views
5

Muszę sprawdzić, czy przeglądarka przechodzi na inną stronę lub zamyka. Mój pomysł jest;Wykrywanie, czy przeglądarka przechodzi na inną stronę

  1. Tworzenie zmiennej globalnej var isNavigating = false;
  2. Bind zdarzenie click aby isNavigating = true każdej kotwicy, która będzie nawigować do innej strony
  3. Sprawdź, czy isNavigating prawda na organizm unload imprezy.

Jakieś inne pomysły? Zalecenia?

+1

myślę warto przeredagować swoje pytanie aby było jasne, chcesz wiedzieć, czy są one przechodząc z dala czy są zamknięcia (to znaczy wiedzieć, które się dzieje, nie tylko wiedzieć, czy dzieje). Jak napisano właśnie teraz, nie jest jednoznaczne, czy chcesz odróżnić je, czy nie. – ADW

+0

Tak, masz rację. –

+0

jeśli użytkownik wpisujący nową witrynę w pasku adresu i naciśnięcie klawisza Enter to nawigacja, nie ma możliwości odróżnienia tej informacji od użytkownika zamykającego kartę. –

Odpowiedz

0

Wystarczy powiązać zdarzenie onunload w oknie.

+0

Już to zrobiłem. Muszę znać nawigację lub zamykanie strony. –

7

Możesz to zrobić za pomocą następującego skryptu.

<script type="text/javascript"> 
    window.onbeforeunload = function(){ return;} 
</script> 

Jednak jeśli planujesz anulować Navigaion, po prostu nie przejmuj się. Nie jest to możliwe, o ile wiem.


Poniższy kod sprawdza, czy użytkownik kliknął łącze.

var checkAnchorClick = false; 

$(document).ready(function() { 
    $("a").live("click", function() { 
     checkAnchorClick = true; 
    }); 
}); 

$(window).unload(function() { 
    if (checkAnchorClick) 
     alert("User clicked a link..."); 
    else 
     alert("Something else..."); 
}); 
+1

w rzeczywistości można "rodzaju" anulować, ale użytkownik musi potwierdzić: http://jsfiddle.net/thomas4g/AA3qY/3/ –

+0

@ Ümit Akkaya http://jsfiddle.net/thomas4g/AA3qY/3/pokazuje, że onbeforeunload działa po kliknięciu łącza, zamknięciu karty, zamknięciu przeglądarki lub w inny sposób. –

Powiązane problemy