![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Wie ktoś jak to jest zrobione np. na fecebook`u to, że skrypt potrafi wykryć kiedy użytkownik przechodzi do strony wstecz?
Mam dynamiczną stronę, na której treść jest ładowana przez js i kiedy przechodze do jakiejś podstrony to zmieniam adres na adresstrony.pl/#podstrona. Chciałbym wykryć kiedy użytkownik przechodzi wstecz/dalej używając nawigacji przeglądarki i zaserwować mu odpowiednią treść. Na facebooku jest to wogóle w niezrozumiały dla mnie sposób rozwiązane, ponieważ zmienia się adres w przeglądarce przed znakiem '#', a mimo to strona nie jest wcale odświeżana. Oszczędzi mi ktoś zabawy w reverse engineering i poda link do jakiegoś wytłumaczenia? Z góry dzięki. Wykrycie zmiany adresu naturalnie mógłbym zrealizować przy pomocy setInterval, ale z oczywistych względów tego rozwiązania chciałbym uniknąć. -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
http://benalman.com/projects/jquery-hashchange-plugin/ - to jest w jQuery, nie każ mi analizować kodu ![]() --edit-- Tak na szybko patrząc tam też jest setInterval. Ta metoda w gruncie rzeczy nie jest zła. Takie obciążenie dla przeglądarki to żadne obciążenie. Nie każę Ci niczego analizować, ale dzięki za pomoc. JQuery nie używam w aktualnym projekcie, a już skrobnąłem coś takiego na szybko przy pomocy EventListener`a. Kod var MyHistory = (function(){ var el = EventListener(['change']); var lastHref = location.href; setInterval(function(){ if( location.href !== lastHref ){ el.invoke('change', location.href, lastHref); lastHref = location.href; } }, 20); return { addEventListener: el.add, removeEventListener: el.remove }; })(); MyHistory.addEventListener('change', function(curr, last){ console.log(last + ' -> ' + curr); }); Tylko tak jak już pisałem wcale mi się to rozwiązanie nie podoba, dlatego to rozwiązanie potraktuję jako tymczasowe. Na facebooku to jakoś zrobili, więc jeśli nikt nic nie podpowie to będę musiał przeanalizować ich kod. -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 20:21 |