2012-04-25 6 views
10

Ich möchte NUR die Domain von den Referrer URLs bekommen. Die Referrer-URLs ich meistens bekommen sind http://www.davidj.com/pages/flyer.asp & http://www.ronniej.com/linkdes.com/?adv=267&loc=897Javascript - NUR Domain erhalten von document.referrer

Whenver ich Referrer Urls wie die oben, ich möchte nur die Domain Beispiel erhalten: http://www.davidj.com

ich versucht habe, die .split Methode verwendet, aber ich Probleme habe es benutzen.

Antwort

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 danke für diese .. es funktioniert, aber ich habe ein Problem .. Ich habe den Code auf meiner Domain mit einem. Js-Datei und im Grunde wird es auf allen Seiten geladen wird. Das einzige Problem ist das. Wenn ich direkt auf eine Seite zugreife (ohne eine Referrer-URL zu haben) bekomme ich den folgenden Fehler: url.match (/: \/\/(. [^ /] +) /) [1]; ** ist null ** – Stephen

+0

Ich benutze dies: var url = unescape (document.referrer); var ref = url.match (/: \/\/(. [^ /] +) /) [1]; – Stephen

+0

Das liegt daran, dass "document.referrer" nicht definiert ist und es keine URL gibt, die übereinstimmen muss. Sie sollten "if (document.referrer)" nicht auf "undefined" überprüfen und dann diesen Code ausführen. – undefined

4

Kette gespalten, in Scheiben schneiden und verbinden:

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

können Sie intern verwenden, schreiben die URL an einem Ankerelement und von diesem einen bekommen die kleineren Teile

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

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

es viel einfacher ist dann als Sie müssen sich nicht um Splitten oder ähnliches kümmern ... es ist ziemlich logisch ... der native Anker hat die gleichen Eigenschaften wie window.location zumindest in Bezug auf die URL

EDIT: IE 6-9 fügt den Standard-Port // „anchor.host http://www.davidj.com:80

+1

IE scheint den Port 'anchor.host' hinzuzufügen, aber nicht zu' location.host'. Sie können stattdessen 'anchor.hostname' und' location.hostname' verwenden, wenn Sie den Port nicht benötigen. –

+0

danke für die Freigabe –

0

Sie einen regulären Ausdruck verwenden könnte :

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") { 
    //................ 
}        
Verwandte Themen