如何使用JavaScript获取引荐来源的域/主机名?

时间:2010-08-05 23:47:31

标签: javascript

我知道我可以通过以下方式获取当前页面的主机名:

var myhostname = location.hostname;

但是如何获取引荐来源者的主机名?我可以通过

获得推荐人
var referrer = document.referrer;

但遗憾的是JavaScript中没有document.referrer.hostname。我怎样才能得到这个值?

这有用的一个示例是,如果有人点击了google.com上的链接。我希望能够从引荐来源(而不是页面和查询字符串)中检索google.com。

7 个答案:

答案 0 :(得分:47)

这样做:

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

Example.

答案 1 :(得分:38)

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

这是一个相对古老的问题,不过这可能有助于任何粉丝。

答案 2 :(得分:27)

解析它。 document.referrer.split( '/' );会让你亲近。或者看看这个

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

如果引用来自浏览器,它将是理智的 - 但以防万一你需要更强大的解析。

答案 3 :(得分:12)

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

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

答案 4 :(得分:1)

您可以使用正则表达式来提取此数据。

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

答案 5 :(得分:1)

它包含协议,但document.origin将起作用。它通过Origin标头工作,它没有包含路径信息。

答案 6 :(得分:0)

您可以使用此功能获取域名。

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;
}