如何使用JavaScript获取引用者的域/主机名?

我知道我可以通过简单地获取当前页面的主机名:

var myhostname = location.hostname; 

但是,如何获取引用者的主机名? 我可以通过

 var referrer = document.referrer; 

但不幸的是,在JavaScript中没有document.referrer.hostname可用。 我怎样才能得到这个价值?

这是有用的例子是,如果有人点击google.com上的链接。 我希望能够从referrer(不是页面和查询string)检索google.com。

通过parsing它。 document.referrer.split( '/' ); 会让你接近。 或者看看这个

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

如果引用来自浏览器,这将是理智的 – 但以防万一你想要更健壮的parsing。

这将做到:

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

例。

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

这是一个比较老的问题,但这可能会帮助任何追随者。

你可以使用var referrer = new URL(document.referrer).hostname

请参阅https://developer.mozilla.org/en-US/docs/Web/API/URL.URL

您可以使用正则expression式来提取这些数据。

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

它包括协议,但document.origin将工作。 它通过Origin标题工作,它没有包含它的path信息。

您好使用此function获取域名。

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