2010-08-05 28 views
55

wiem, że mogę uzyskać nazwę hosta aktualnej strony, po prostu robi:Jak uzyskać nazwę domeny/hosta strony odsyłającej za pomocą JavaScript?

var myhostname = location.hostname; 

Ale jak mogę uzyskać nazwę hosta polecający? można uzyskać referrer przez

var referrer = document.referrer; 

ale niestety nie ma document.referrer.hostname dostępna w języku JavaScript. Jak mogę uzyskać tę wartość?

Przykładem tego, że jest to przydatne, jest kliknięcie linku w witrynie google.com. Chcę móc odzyskać stronę google.com ze strony odsyłającej (nie strony i ciągu zapytania).

Odpowiedz

25

Parsując go. document.referrer.split('/'); Cię zbliży. Albo spojrzeć na tym

http://blog.stevenlevithan.com/archives/parseuri

Jeśli wywołującej przychodzi z przeglądarki, to będzie normalny - ale tylko w przypadku, gdy chcesz bardziej wydajny analizowania.

+1

Dzięki. Proste parsowanie działa dobrze. – Keltex

+3

Jeśli nie chcesz ponownie wymyślać koła analizującego: z 'var a = document.createElement ('a')' utwórz element zakotwiczenia, następnie ustaw 'a.href = document.referrer', a następnie po prostu odczytaj 'a.hostname' Lub jeszcze prostsze (jeśli używasz NPM), użyj [ulocation] (https://npmjs.com/package/ulocation):' npm install -S ulocation', 'var Location = require ('ulocation') 'i użyj' Location (document.referrer) .hostname'. * Zrzeczenie się: Jestem autorem tego pakietu * –

44

byłoby to zrobić:

document.referrer.split('/')[2]; 

Example.

+0

elegancki, dzięki :-) – Marcin

+0

podział na/nie działa dla mnie. Z jakiegoś powodu musiałam przeciąć przecinek. działa, ale nie jest pewne, czy może to być spowodowane zmianami od 2010 roku. –

32
function parseURL(url) { 
    var a=document.createElement('a'); 
    a.href=url; 
    return a.hostname; 
} 

Jest to stosunkowo stare pytanie, mimo to może pomóc obserwuje.

+5

To jest właściwa odpowiedź. – YPCrumble

+0

Zobacz także: http://tutorialzine.com/2013/07/quick-tip-parse-urls/ – YPCrumble

+3

piękne wykorzystanie wbudowanych możliwości przeglądarki – alexreardon

1

Możesz użyć wyrażeń regularnych, aby wyodrębnić te dane.

string.match(/^http([s]?)://([a-zA-Z0-9-_\.]+)(:[0-9]+)?/);

0

Witam, użyj tej funkcji, aby uzyskać nazwę domeny.

function getDomain(url) { 
    if (url) { 
     var match = /(?:https?:\/\/)?(?:\w+:\/)?[^:?#\/\s]*?([^.\s]+\.(?:[a-z]{2,}|co\.uk|org\.uk|ac\.uk|org\.au|com\.au))(?:[:?#\/]|$)/gi 
       .exec(url); 
     return match ? match[1] : null; 
    } else 
     return null; 
} 
1

Zawiera protokół, ale zadziała document.origin. Działa poprzez nagłówek Origin, który nie zawiera informacji o ścieżce.

Powiązane problemy