2013-03-06 10 views
5

I przeszukiwane przez SO i kwestia ta ma beenaskedbeforeseveraltimes, ale nie znalazłem odpowiedzi, które wyjaśniają, w jaki sposób zachowanie Chcę zaimplementować jest rzeczywiście realizowany.Jak wykryć pozycję w wynikach wyszukiwania został otwarty w innej karcie przeglądarki

Co mam na myśli, to naśladować funkcję booking.com, w której po otwarciu wyniku wyszukiwania z listy wyników wyszukiwania pojawia się znak wskazujący, że wynik został otwarty w innej karcie (lub oknie), oraz znika, gdy ta druga karta (lub okno) została zamknięta.

Zrzut ekranu: enter image description here

Pierwsza próba była sprawdzić, czy niektóre javascript został dołączony do linków, ale to nie o to chodzi, bo jeśli po prostu skopiować link ze źródła strony i otworzyć go, funkcja Prace.

Więc pomyślałem, że może to być w jakiś sposób zarządzane po stronie serwera, uruchamiane w przeglądarce, aby spróbować przechwycić wszystkie wywołania ajax między dwiema otwartymi stronami a serwerem. Było wiele próśb, ale nikt chyba nie przekazał potrzebnych informacji (chyba identyfikator hotelu lub jakiś URL). Zauważ również, że otwarcie adresu URL elementu wynikowego, który zawiera identyfikator sesji, w oknie incognito lub w innej przeglądarce (mam na myśli okno firefox zamiast chrome), powoduje przerwanie funkcji; więc wyklucza śledzenie sesji lub adresu IP.

Ostatnia próba, o której mogłem pomyśleć, to strona wyników wyszukiwania, która pobiera niektóre pliki cookie, które są ustawione w domenie, gdy inna strona jest otwierana i rozbrajana, gdy jest zamknięta. Sprawdziłem więc ciasteczka, których zawartość jest rzeczywiście trochę tajemnicza do zrozumienia, ale widziałem, że żadne ciasteczko nie jest faktycznie zmieniane podczas otwierania i zamykania innych kart, więc znowu nie można tego zrobić w ten sposób.

Co zostało?

Odpowiedz

2

Teoretycznie powinno być możliwe użycie localStorage/sessionStorage, aby to zrobić, ustawiając bieżący adres URL strony na każdej stronie i sprawdzając co jakiś czas na "oryginalnej" stronie, aby zobaczyć, czy wartość nie jest tak samo jak document.location.

Jeśli ustawisz bieżący czas również w schowku, możesz sprawdzić, czy strona jest zamknięta, sprawdzając, czy "ostatni czas karty" jest, powiedzmy, ponad 30 sekund temu, lub niektóre.

Jeśli chodzi o stronę internetową, odwiedziłem ją i przeszukałem, i nie widziałem żadnych ostrzeżeń ani niczego, co mogłoby spowodować otwarcie nowych kart podczas próby.

+0

dodał zrzut ekranu, aby pokazać, gdzie jest ta funkcja: –

+0

Przybiłeś ją. Strona zakładki podrzędnej zapisuje w lokalnej pamięci identyfikator hotelu i usuwa go przy zamknięciu. Pule strony nadrzędnej na localstorage i pokazuje/ukrywa div poszczególnych hoteli wymienionych jako wyniki. Dziękuję Ci bardzo; i witamy w przepełnieniu stosu. –

Powiązane problemy