2016-02-08 10 views
7

Jaki byłby realną drogą do osiągnięcia następujących:Jeśli użytkownik pochodzi z poprzedniej strony na miejscu to ta, inaczej to zrobić

Witryna ma dwie strony; Strona nadrzędna i Strona wewnętrzna. Jeśli użytkownik wszedł bezpośrednio na stronę Inside, wpisując adres lub podążając za linkiem ze strony innej niż Parent, wyświetli "foo". Jeśli użytkownik wszedł na stronę Wewnątrz ze strony nadrzędnej, pokaże "pasek".

Potrzebowałbym tego zrobić w JS, jeśli to możliwe. Jeśli nie, PHP jest wyborem wtórnym.

+5

dokładnie w tym celu wypełniamy '$ _SERVER ['HTTP_REFERER']'. :) – Jigar

+0

Jeśli masz wiele stron, użyj sesji PHP, aby zapisać bieżący adres URL jako poprzedni i sprawdź wartość sesji na wszystkich stronach. Użyj echo basename ($ _ SERVER ['PHP_SELF']); aby uzyskać nazwę strony. – Nikz

+0

Możliwy duplikat [Uzyskaj adres URL odsyłacza w javascript] (http://stackoverflow.com/questions/4131455/get-the-referral-url-in-javascript) –

Odpowiedz

1

Spróbuj tego

ten kod w drugą stronę

jQuery(window).load(function() { 
    if (sessionStorage.getItem('dontLoad') == null) { 
    //show bar 
    } 
    else{ 
    //show foo 
    } 
}); 

ten kod na stronie macierzystej

jQuery(window).load(function() { 
    sessionStorage.setItem('dontLoad','true') 
}); 
+0

wydaje się, że Twój kod zawiera błąd składniowy. Daj mi pusty ekran. – beliy333

+0

ponieważ ładuję stronę wewnętrzną poprzez ajax, a nie osobną stronę, to wydaje się być najbardziej odpowiednią odpowiedzią i działa w moim przypadku. – beliy333

1

with php:

Istnieje prosty sposób, aby utworzyć stronę mediatora, która przekierowuje do strony wewnętrznej po zrobieniu sesji/cookie. Jeśli otrzymasz sesję/plik cookie, wyświetlona zostanie niepomyślna sesja w postaci foo &.

jeśli ktoś bezpośrednio pochodzić z adresu URL, brak sesji/cookies znaleziono & to pokazać pasek ..

4

można uzyskać na stronie użytkownik pochodziła z z document.referrer.

Więc można wdrożyć rozwiązanie takiego:

if (document.referrer === 'yoursite.com/parentpage') { 
    // do bar 
} else { 
    // do foo 
} 
1

można użyć document.referrer ale to nie zawsze jest ustawiony. Można dodać parametr do adresu URL na stronie nadrzędnej, a następnie sprawdzić jego istnienia na stronie dziecięcej

link na stronie nadrzędnej:

<a href='myChildPage.html?fromParent=1'>My Child Page</a> 

kod JS na stronie dziecka:

var fromParent=false; 
var Qs = location.search.substring(1); 
var pairs = Qs.split("&"); 
for(var i = 0; i < pairs.length; i++){ 
    var pos = pairs[i].indexOf('='); 
    if(pos!==-1){ 
     var paramName = pairs[i].substring(0,pos); 
     if(paramName==='fromParent'){ 
      fromParent=true; 
      break; 
     } 
    } 
} 

if(fromParent){ 
    alert("From Parent"); 
}else{ 
    alert("NOT From Parent"); 
} 

Ta metoda nie jest w 100% niezawodna, ponieważ użytkownicy mogą wpisywać ten sam adres URL co link strony nadrzędnej. Dla lepszej dokładności sprawdź najpierw dokument.referrer, a jeśli nie, użyj metody opisanej powyżej:

Powiązane problemy