2012-04-25 17 views
10

Chciałbym otrzymać domenę wyłącznie z adresów URL stron odsyłających. Adresy URL stron odsyłających ja przeważnie uzyskać są http://www.davidj.com/pages/flyer.asp & http://www.ronniej.com/linkdes.com/?adv=267&loc=897javascript - pobierz domenę TYLKO od document.referrer

whenver uzyskać adresy URL stron odsyłających jak wyżej, po prostu chcę, aby uzyskać przykładowe domeny: http://www.davidj.com

Próbowałem, używając metody .split ale mam problemy Użyj tego.

Odpowiedz

12
var url = "http://www.ronniej.com/linkdes.com/?adv=267&loc=897" 
var referrer = url.match(/:\/\/(.[^/]+)/)[1]; 

http://jsfiddle.net/hyjcD/

if (document.referrer) { 
    url = document.referrer; 
    ref = url.match(/:\/\/(.[^/]+)/)[1]; 
} 
+0

@Reminson dziękuję za to ... działa, ale mam problem .. Umieściłem kod w mojej domenie przy użyciu pliku .js i zasadniczo jest on ładowany na wszystkich stronach. Jedynym problemem jest to. za każdym razem, gdy uzyskuję bezpośredni dostęp do strony (bez adresu URL strony odsyłającej), pojawia się następujący komunikat o błędzie: url.match (/: \/\/(. [^ /] +) /) [1]; ** ma wartość null ** – Stephen

+0

Używam tego: var url = unescape (document.referrer); var ref = url.match (/: \/\/(. [^ /] +) /) [1]; – Stephen

+0

ponieważ 'document.referrer' jest' niezdefiniowany' i nie ma adresu URL do dopasowania, powinieneś sprawdzić 'if (document.referrer) 'nie jest" niezdefiniowany ", a następnie wykonać ten kod. – undefined

4

Łańcuch split, plaster i dołącz:

document.referrer.split("/").slice(0,3).join("/") 
8

można użyć wewnętrznie napisać url do elementu kotwiącego i od tego dostać mniejsze części

var anchor = document.createElement("a"); 
anchor.href = "http://www.davidj.com/pages/flyer.asp"; 

console.log(anchor.protocol + "//" + anchor.host); // "http://www.davidj.com" 

znacznie łatwiej jest wtedy jako nie musisz dbać o dzielenie lub coś takiego ... jest to całkiem logiczne ... macierzysta kotwica ma takie same właściwości, jak window.location co najmniej pod adresem URL

EDIT: IE 6-9 dodaje domyślny port do anchor.host // „http://www.davidj.com:80

+1

IE wydaje się, aby dodać port do 'anchor.host', ale nie' location.host'. Zamiast tego możesz użyć 'anchor.hostname' i' location.hostname', jeśli nie potrzebujesz tego portu. –

+0

dzięki za udostępnienie –

0

można użyć wyrażenia regularnego :

var matchHost = /^https?:\/\/.*\//; 

var match = matchHost.exec('http://www.davidj.com/pages/flyer.asp'); 
if(match) { 
    var host = match[0]; 
    console.log(host); 
} 
0
if (document.referrer.split('/')[2] == "domain") { 
    //................ 
}