Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Blokada otworzenia strony w drugiej karcie przeglądarki
Forum PHP.pl > Forum > Po stronie przeglądarki
Mlodycompany
Witam. Chciałbym zablokować możliwość otworzenia strony w dwóch kartach przeglądarki naraz, czyli tak aby była możliwa tylko jedna. Zapytałem wujka i znalazłem coś takiego http://devpytania.pl/questions/6285/skrypt...w-jednej-karcie i zrobiłem tak jak jest podane, lecz jest mały problem. Odświeżenie strony jest traktowane na otworzenie jej w nowej karcie. Może macie pomysł jak naprawić problem z odświeżaniem lub jakiś inny sposób aby zablokować otworzenie strony w dwóch kartach?
!*!
Nie ma czegoś takiego jak "strona w jednej zakładce". To jest taki sam mit jak blokowanie PPM.
Odświeżanie możesz rozwiązać np. sprawdzenie czy istnieje historia strony, choć nie jestem pewien czy

1. zadziała to na każdej przeglądarce
2. czy strona w zakładce, zawsze jest już zaszyta w historii czy dopiero po przejściu w inny link.
viking
Możesz też wykorzystać localstorage który dzieli dane pomiędzy zakładkami.
Mlodycompany
Cytat(viking @ 19.02.2013, 11:28:33 ) *
Możesz też wykorzystać localstorage który dzieli dane pomiędzy zakładkami.


jak z localstorage sprawdzę czy jest otwarta inna karta?


---

Myślałem też aby zaprzęgnąć w to WebSocket i po stronie serwera sprawdzać ile jest połączeń z jednej przeglądarki i w ten sposób blokować, ale niestety nie mogę poradzić sobie z serwerem WS
sowiq
@viking, za pomocą localStorage raczej nie sprawdzisz ilości otwartych kart.

@Mlodycompany, zainteresuj się Shared Web Workers. Rozwiązanie to pozwala na przesyłanie komunikatów pomiędzy kartami z tej samej domeny. Każda nowa karta na początku rozsyła wiadomość "nowa karta" i w przypadku uzyskania odpowiedzi od istniejącej "ale stara już istnieje...", zamykasz ją. Jeśli odpowiedzi nie ma, nowa karta "wie", że jest jedyną i zaczyna nasłuchiwać komunikatu "nowa karta", na który odpowie "ale stara już istnieje...". I to chyba tyle.

[edit]
Jest nawet jakiś plugin jQuery: http://www.sfpeter.com/2008/03/communicati...-my-new-plugin/ Nieważne smile.gif
!*!
Jest jeszcze sessionStorage i to chyba spełni zadanie.
Mlodycompany
No myślę, że Shared Web Workers rozwiąże ten problem, lecz spotkałem się z dużym problemem, Firefox tego nie dziabie, sypie błędem. Dziwne, bo niby od v16 powinno być wspierane, a jednak... W operze nawet błędu nie zwraca;p Co do sessionStorage to też niezbyt przekonany jestem, ale zaraz wytestuję i się pomyśli

--

Shared Web Workers na chwilę obecną odpada. Sprawdzałem w 6 przeglądarkach i tylko w 1 działało poprawnie, Niestety nie jest to ani Opera, ani Firefox, ani Chrome, lecz nijaka Arora. Tylko w niej uzyskałem zamierzany efekt...
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.